63

重複の可能性:
Python でリストのリストからフラット リストを作成する

サブリストのすべての要素を含む、多次元 (ネストされた) python リストを単一のリストに変換する簡単な方法を見つけようとしています。

例えば:

A = [[1,2,3,4,5]]

に変わります

A = [1,2,3,4,5]

また

A = [[1,2], [3,4]]

に変わります

A = [1,2,3,4]
4

4 に答える 4

74

itertools.chainを使用します。

itertools.chain(*iterables):

最初の iterable からすべての iterable が使い果たされるまで要素を返し、次にすべての iterable が使い果たされるまで次の iterable に進む反復子を作成します。連続したシーケンスを単一のシーケンスとして扱うために使用されます。

例:

from itertools import chain

A = [[1,2], [3,4]]

print list(chain(*A))
# or better: (available since Python 2.6)
print list(chain.from_iterable(A))

出力は次のとおりです。

[1, 2, 3, 4]
[1, 2, 3, 4]
于 2012-08-08T08:30:35.770 に答える
35

使用reduce機能

reduce(lambda x, y: x + y, A, [])

またはsum

sum(A, [])
于 2012-08-08T08:25:08.347 に答える
8

最初のケースは、次のように簡単に行うこともできます。

A=A[0]
于 2012-08-08T08:25:55.457 に答える
6

itertoolsそのためのチェーン機能を提供します。

http://docs.python.org/library/itertools.html#recipesから:

def flatten(listOfLists):
    "Flatten one level of nesting"
    return chain.from_iterable(listOfLists)

結果は反復可能であるため、必要になる場合があることに注意してくださいlist(flatten(...))

于 2012-08-08T08:29:22.997 に答える