1

リストインリスト階層を削除する最も Pythonic な方法は何ですか?

つまり、から

A=[[(1, 1), (2, 2)],[(1, 1), (2, 2), (3, 3)], [(1, 1)]]

B=[(1, 1), (2, 2), (1, 1), (2, 2), (3, 3), (1, 1)]
4

4 に答える 4

2

chain.from_iterableを使用してネストされたリストをアンラップするほうがより Pythonicです

>>> from itertools import chain
>>> list(chain.from_iterable(A))
[(1, 1), (2, 2), (1, 1), (2, 2), (3, 3), (1, 1)]
于 2013-10-11T03:21:54.007 に答える
2
import operator
reduce(operator.add, A)

また

reduce(lambda x,y:x+y, A)
于 2013-10-11T03:17:00.680 に答える
1

「最もpythonic」は際限なく議論される可能性があります。ネストされたリストをフラット化するよりも、ネストされたリスト内包表記を好みます。

B = [element for sublist in A for element in sublist]

結局のところ、コードと最も頻繁にやり取りする必要があるのはおそらくあなたであるため、最も読みやすいものを使用してください。

于 2013-10-11T03:21:05.440 に答える
1
import itertools

a = [[(1, 1), (2, 2)],[(1, 1), (2, 2), (3, 3)], [(1, 1)]]

list(itertools.chain(*a))

itertools モジュールをチェックしてください。いいものがいっぱい。

于 2013-10-11T03:23:03.870 に答える