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

2017 年 11 月 24 日
 awker
a = [1]

b = [2]

c = [3]

d = []

如何合并成 d = [[1], [2], [3]]?
10405 次点击
所在节点    Python
16 条回复
wwqgtxx
2017 年 11 月 24 日
d.append(a)
d.append(b)
d.append(c)
wizardoz
2017 年 11 月 24 日
d = [l for l in [a, b, c, d] if len(l) > 0]
seki
2017 年 11 月 24 日
没看懂,d = [a, b, c] 不行吗
awker
2017 年 11 月 24 日
@wizardoz 可以 厉害
jxie0755
2017 年 11 月 24 日
d = [a, b, c]
lll9p
2017 年 11 月 25 日
过滤掉 d 为[],然后合并成个列表?

list(filter(None,[a,b,c,d]))
lll9p
2017 年 11 月 25 日
[l for l in [a, b, c, d] if l]

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

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

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

https://study.congcong.us/t/409304

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

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

© 2021 V2EX