1

次のような主なリストがあります。

a = [ [[1,2,3],[4,5,6]], [[7,8,9],[10,11,12]], [[13,14,15],[16,17,18]] ]

そして、次のように並べ替える必要があります。

b = [[1,2,3,7,8,9,13,14,15], [4,5,6,10,11,12,16,17,18]]

つまり、メインリストの各サブリストの最初のサブリストのすべての要素を取得し、それらを0新しいリストの位置にある単一のサブリストに配置し、次に2番目のサブリストに対して同じことを行い、単一のサブリストのすべての要素を配置します1この新しいリストの。

Python でリストのリストからフラットなリストを作成するに記載されzipているソリューションと組み合わせてみましたが、うまく動作しません。

4

4 に答える 4

1
>>> a = [[[1,2,3],[4,5,6]], [[7,8,9],[10,11,12]], [[13,14,15],[16,17,18]]]
>>>
>>> [[i for v in r for i in v] for r in zip(*a)]
[[1, 2, 3, 7, 8, 9, 13, 14, 15], [4, 5, 6, 10, 11, 12, 16, 17, 18]]

見る:zip()

于 2013-11-11T13:37:35.470 に答える
0

リストは、空のリストを最初の要素として sum() を使用することでフラット化できるため、次のように使用できます。

[sum((item[0] for item in a), []), sum((item[1] for item in a), [])]

またはこれ、任意の数の内部要素の場合:

[sum((item[i] for item in a), []) for i in range(len(a[0]))]
于 2013-11-11T16:43:16.660 に答える