gpt4 book ai didi

python - 使用逗号分隔值从另一个列表生成列表

转载 作者:太空宇宙 更新时间:2023-11-03 13:28:48 25 4
gpt4 key购买 nike

我有如下列表:

mylist = ['7','8,9','10', '11,12']

我想要一个列表:

['7','8','9','10','11','12']

我能得到的最接近的是使用这段代码:

mylist = ['7','8,9','10', '11,12']
ab = []
for e in mylist:
if ',' in e:
ab.append(e.split(','))
mylist2 = [x for x in mylist if ',' not in x]
print mylist2 #clean list

merged = []
for f in ab:
merged = mylist2 + f

但是,这省略了 '8','9' 序列,我怎样才能轻松实现呢?

最佳答案

您现有代码的问题非常简单:

merged = []
for f in ab:
merged = mylist2 + f

对于 ab 中的每个 f,您忘记了 merged 中的任何内容,并将其替换为 mylist + f .所以,最后,只有最后一个 fmerged 结束。

你可能想要这样的东西:

for f in ab:
mylist2 = mylist2 + f
merged = mylist2

通过这种方式,我们不断将每个 f 添加到列表中,并将结果存储回同一个位置。


但是,有一种更简单的方法可以解决这个问题。不要用逗号取出那些然后再将它们添加回去,只需按原样处理所有内容:

mylist = ['7','8,9','10', '11,12']
merged = []
for element in mylist:
elements = element.split(',')
merged += elements

这样就保留了一切,而且都保持了原来的顺序,简单了很多。 (注意 '7'.split(',') 非常好——它返回一个单元素列表 ['7'],您可以将其添加到累积列表的方式与 ['8', '9'] 相同。)

您可以通过首先使用推导来拆分每个元素,然后合并并展平结果来使其更加简洁。有几种写法,但这里有两种:

merged = [subelement for element in mylist for subelement in element.split(',')]

from itertools import chain
merged = list(chain.from_iterable(element.split(',') for element in mylist))

关于python - 使用逗号分隔值从另一个列表生成列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50755500/

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