Ket*_*uem 23

使用列表理解:

ar = [['a','b','c'],['d','e','f']]
concat_list = [j for i in ar for j in i]
Run Code Online (Sandbox Code Playgroud)

  • 这是列表理解中的双重迭代。第一个“for”将“ar”中的每个列表挑选为“j”,第二个“for”将“j”中的每个元素挑选为“i”。 (3认同)
  • 完全是最好的方式,因为它是最紧凑的.但它是如何工作的? (2认同)

wil*_*ill 15

列表连接只是与+运营商完成.

所以

total = []
for i in [['a','b','c'],['d','e','f']]:
    total += i

print total
Run Code Online (Sandbox Code Playgroud)


Sib*_*ibi 5

这样可以:

a = [['a','b','c'],['d','e','f']]
reduce(lambda x,y:x+y,a)
Run Code Online (Sandbox Code Playgroud)

  • 我同意您的答案更具可读性:),我只是给出了一个通用答案。:) (2认同)
  • @Sibi为什么不简单地使用`itertools.chain()`,它仅为该目的而构建,并且与您的解决方案相比非常快。http://stackoverflow.com/questions/406121/flattening-a-shallow-list-in-python#408281 (2认同)

Hui*_*eng 5

尝试:

sum([['a','b','c'], ['d','e','f']], [])
Run Code Online (Sandbox Code Playgroud)

或者更长但更快:

[i for l in [['a', 'b', 'c'], ['d', 'e', 'f']] for i in l]
Run Code Online (Sandbox Code Playgroud)

itertools.chain或者按照 @AshwiniChaudhary 建议使用:

list(itertools.chain(*[['a', 'b', 'c'], ['d', 'e', 'f']]))
Run Code Online (Sandbox Code Playgroud)

  • `sum()` 不应该用于此类事情。正如 [docs](http://docs.python.org/2/library/functions.html#sum) 所说: **要连接一系列可迭代对象,请考虑使用 itertools.chain()。** (6认同)

归档时间:

查看次数:

19548 次

最近记录:

12 年,7 月 前