変換方法
[(1,), (2,), (3,)]
に
[1, 2, 3]
@Levonのソリューションは、あなたのケースに完全に適合します。
ちなみに、タプルに可変数の要素がある場合は、chain
fromを使用することもできますitertools
。
>>> a = [(1, ), (2, 3), (4, 5, 6)]
>>> from itertools import chain
>>> list(chain(a))
[(1,), (2, 3), (4, 5, 6)]
>>> list(chain(*a))
[1, 2, 3, 4, 5, 6]
>>> list(chain.from_iterable(a)) # More efficient version than unpacking
[1, 2, 3, 4, 5, 6]
タプルに可変数の要素を含めることができる場合の別の方法を次に示します。
>>> a = [(1,), (2, 3), (4, 5, 6)]
>>> [x for t in a for x in t]
[1, 2, 3, 4, 5, 6]
これは基本的に、次のループの短縮形です。
result = []
for t in a:
for x in t:
result.append(x)
>>> a = [(1,), (2,), (3,)]
>>> zip(*a)[0]
(1, 2, 3)
リストの場合:
>>> list(zip(*a)[0])
[1, 2, 3]
sum
次のように関数を使用することもできます。
e = [(1,), (2,), (3,)]
e_list = list(sum(e, ()))
また、リストのリストでも機能して単一のリストに変換しますが、次のように使用する必要があります。
e = [[1, 2], [3, 4], [5, 6]]
e_list = list(sum(e, []))
これにより、[1, 2, 3, 4, 5, 6]
... for
... in
...によって別のリストからリストを抽出する方法は常にあります。この場合、次のようになります。
[i[0] for i in e]
リスト内包表記でタプルをアンパックすることもできます。
e = [(1,), (2,), (3,)]
[i for (i,) in e]
それでも与えます:
[1, 2, 3]
ワンライナーよ!
list(*zip(*[(1,), (2,), (3,)]))