Python 多个列表如何合并成一个大列表?

2017-11-24 18:11:03 +08:00
 awker
a = [1]

b = [2]

c = [3]

d = []

如何合并成 d = [[1], [2], [3]]?
9642 次点击
所在节点    Python
16 条回复
wwqgtxx
2017-11-24 18:16:25 +08:00
d.append(a)
d.append(b)
d.append(c)
wizardoz
2017-11-24 18:16:33 +08:00
d = [l for l in [a, b, c, d] if len(l) > 0]
seki
2017-11-24 18:16:34 +08:00
没看懂,d = [a, b, c] 不行吗
awker
2017-11-24 19:01:37 +08:00
@wizardoz 可以 厉害
jxie0755
2017-11-24 23:18:22 +08:00
d = [a, b, c]
lll9p
2017-11-25 00:35:47 +08:00
过滤掉 d 为[],然后合并成个列表?

list(filter(None,[a,b,c,d]))
lll9p
2017-11-25 00:37:26 +08:00
[l for l in [a, b, c, d] if l]

这样貌似快一些
@wizardoz #2
scriptB0y
2017-11-25 00:40:14 +08:00
@lll9p 是的 len([]) > 0 这不 pythonic
NoAnyLove
2017-11-25 08:01:14 +08:00
来个题外的,如果是要把 a、b、c 合并成[1, 2, 3],那么可以用 d=sum([a, b, c], [])
wellsc
2017-11-25 08:23:38 +08:00
@wizardoz 时间复杂度会不会太高了
zhengjian
2017-11-25 10:32:32 +08:00
@NoAnyLove d = a + b + c
NoAnyLove
2017-11-25 10:51:56 +08:00
@zhengjian 嗯,我举措例子了。。。。。。。应该是展开的例子。。。。。。

>>> d = [[1,2,3], [4,5], [6,7]]
>>> sum(d, [])
[1, 2, 3, 4, 5, 6, 7]
SingeeKing
2017-11-25 16:21:34 +08:00
@NoAnyLove 为什么不直接 a + b + c
hcnhcn012
2017-11-26 00:44:33 +08:00
[a,b,c]直接引用应该是最快的吧
NoAnyLove
2017-11-26 11:05:54 +08:00
@SingeeKing 因为我举错例子了。。。。。应该#12 楼的那种情况才这样用
cbiqih
2017-11-27 20:02:45 +08:00
from itertools import chain
d = list(chain(a, b, c))

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

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

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

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

© 2021 V2EX