リストインリスト階層を削除する最も 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)]
リストインリスト階層を削除する最も 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)]
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)]
import operator
reduce(operator.add, A)
また
reduce(lambda x,y:x+y, A)
「最もpythonic」は際限なく議論される可能性があります。ネストされたリストをフラット化するよりも、ネストされたリスト内包表記を好みます。
B = [element for sublist in A for element in sublist]
結局のところ、コードと最も頻繁にやり取りする必要があるのはおそらくあなたであるため、最も読みやすいものを使用してください。
import itertools
a = [[(1, 1), (2, 2)],[(1, 1), (2, 2), (3, 3)], [(1, 1)]]
list(itertools.chain(*a))
itertools モジュールをチェックしてください。いいものがいっぱい。