Python 列表踢出某个元素上机作业题

2021-12-10 09:55:53 +08:00
 going

请根据输入的原始列表,输出目标列表:

原始列表:[1,2,None,None,None,None,None,None,3,4,5,6,None,None,None,None,7,8,9,10]

目标列表: [1,2] [3,4,5,6] [7,8,9,10]

2940 次点击
所在节点    Python
14 条回复
princelai
2021-12-10 10:24:07 +08:00
from itertools import groupby

[list(g[1]) for g in groupby(ll,key=lambda x:x is not None) if g[0]]
going
2021-12-10 10:34:30 +08:00
@princelai 厉害
learningman
2021-12-10 10:52:31 +08:00
建议自己的作业自己写,楼上那哥们 pythonic 的写法你能理解吗
ma6254
2021-12-10 11:31:46 +08:00
自己的作业自己写(滑稽
deplivesb
2021-12-10 11:58:09 +08:00
v2 已经沦陷为百度知道了吗
stimw
2021-12-10 13:07:23 +08:00
为什么大半年前就在问作业了...大半年后还停留在这种问题
bytesfold
2021-12-10 13:34:04 +08:00
@learningman 并不觉得 pythonic ,如果是公司代码不加备注基本无法维护
JasonEWNL
2021-12-10 14:01:22 +08:00
@deplivesb 高级点,Way to Overflow 。(

@going 话说回来鉴于是作业,或可回归不依赖任何库的一般思路,日后有机会亦能写出不一定最具效率但较易维护的代码。

```
il = [1, 2, None, None, None, None, None, None, 3, 4, 5, 6, None, None, None, None, 7, 8, 9, 10]
ol = [[]]
for i in il:
if i:
ol[-1].append(i)
elif ol[-1]:
ol.append([])
print(ol) # [[1, 2], [3, 4, 5, 6], [7, 8, 9, 10]]
```
keepeye
2021-12-10 14:57:39 +08:00
遍历一遍不就可以了吗?这题是送分题
cnrting
2021-12-10 15:06:16 +08:00
print(il[0:2],il[8:12],il[16:20]) 🐶
raycool
2021-12-10 15:12:59 +08:00
@princelai 学习了,以前还真少用这个 groupby
fml87
2021-12-10 15:43:42 +08:00
lst = [1,2,None,None,None,None,None,None,3,4,5,6,None,None,None,None,7,8,9,10]

[*map(eval,re.split(",,+",re.sub("[^0-9,]", "",str(lst) )))]
Morii
2021-12-10 16:57:15 +08:00
为啥我感觉 op 没有提问的礼貌
szxczyc
2021-12-11 04:25:50 +08:00
@cnrting 哈哈哈哈哈~能把我笑死

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/821251

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX