-2

引数リストをリストにキャストする方法はありますか?

次のようなもの:

list(*arguments)

list()は最大で1つの引数を取るため、機能しません。

タプルのタプルをリストにキャストしようとしています

list(('a', *('b', 5)) 

まったく仕事をしない...

4

1 に答える 1

1

タプルのタプルの場合、たとえば、

a = ((1, 2), (3, 4), (5, 6))

それをリストに入れることは、あなたが期待しているリストに依存します-タプルlistのリストを取得するためにタプルを直接渡すことができます(反復可能である必要があります):

>>> list(a)
[(1, 2), (3, 4), (5, 6)]

代わりにフラット化されたリストが必要なitertools.chain場合は、ジェネレーターが提供されますが、それをに渡しlistリストを取得できます。

>>> import itertools
>>> list(itertools.chain.from_iterable(a))
[1, 2, 3, 4, 5, 6]

リストのリストが必要な場合は、リスト内包表記が必要です。

>>> [list(b) for b in a]
[[1, 2], [3, 4], [5, 6]]

タプルと単一値の異種タプルをフラット化するには、もう少し複雑になります。必要なのは、すべての単一値を単一長のタプルまたはリストに変換することです。これはchain、上記の例と同じです。タプルをフラット化するだけで、ネストされたリストなどはフラット化しない場合は、次のように実行できます。

>>> a = ('a', ('b', 'c'))
>>> list(itertools.chain.from_iterable(b if isinstance(b, tuple) else [b] for b in a))
['a', 'b', 'c']
于 2012-10-07T02:39:09.457 に答える