gpt4 book ai didi

python - 拆开列表 Python

转载 作者:太空宇宙 更新时间:2023-11-03 12:46:36 24 4
gpt4 key购买 nike

如果我有这样一个列表:

X = [0, 2, 3, 4.0, 1, 0, 3, 0, 0, 0, 2, 1, 5, 2, 6, 0, 2.2, 1]

我将如何在 python 中编写代码来获取此列表并找到连续正数的数量,然后制作一个列表,其中包含其中每个连续数字的列表。

例如这个 x 的例子会返回一个数字 4它也会返回:

[[ 2, 3, 4.0, 1], [3], [ 2, 1, 5, 2, 6], [ 2.2, 1]]. 

我写这个是为了找到所有的零,但我不知道从那里去哪里:

 zeros = []
for i in range(0,len(World)):
if z[i]==0:
zeros.append(i)

最佳答案

没有必要对零进行细化。您可以简单地遍历您的列表并将正数放入临时列表中,直到遇到零,但作为此类任务的更 pythonic 方法,您可以使用 itertools.groupby :

>>> from itertools import groupby
>>> [list(g) for k,g in groupby(X,key=lambda x:x>0) if k]
[[2, 3, 4.0, 1], [3], [2, 1, 5, 2, 6], [2.2, 1]]

如果你想在没有 itertools 模块的情况下做到这一点,你可以使用下面的函数,它根据前面的解释工作,并在每次遇到零时产生临时列表,最后返回一个包含列表的生成器您可以通过调用 list 函数将其转换为列表的正数:

>>> def grouper(li,temp=[]):
... for i in li:
... if i>0:
... temp.append(i)
... else:
... if temp: yield temp
... temp=[]
... if temp : yield temp
...

演示:

>>> list(grouper(X))
[[2, 3, 4.0, 1], [3], [2, 1, 5, 2, 6], [2.2, 1]]

关于python - 拆开列表 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32890089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com