8

次のコードを実行してみたとき

product([1,2,3],['a','b'])

次のタイプのオブジェクトを返しました。

<itertools.product object at 0x01E76D78>

次に、list()を呼び出してみたところ、次のようになりました。

[(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b'), (3, 'a'), (3, 'b')]

タプルの代わりにリストのリストにする方法はありますか?このような:

[[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b'], [3, 'a'], [3, 'b']]

前もって感謝します!

4

3 に答える 3

8
list(map(list, product([1, 2, 3], ['a', 'b'])))

Python 3 では必要ですが、Python 2 では最外部list()は必要ありません。これは、Python 3 では amap objectが によって返されるためmap()です。

于 2012-06-19T06:59:24.840 に答える
2

タプルの反復子を返します。リストのリストが必要な場合は、次のようにします。

[list(a) for a in product([1,2,3],['a','b'])]

ただし、多くの場合、イテレータを使用するだけの方が優れています。あなたはただ行うことができます:

for item in product([1,2,3],['a','b']):
    # do what you want with the item
于 2012-06-19T06:51:31.353 に答える
1

次のことができますが、無意味です。値は変更されないため、リストよりもタプルの方が適しています。また、メモリを節約します。

>>> from itertools import product
>>> [list(x) for x in product([1,2,3],['a','b'])]
[[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b'], [3, 'a'], [3, 'b']]
于 2012-06-19T06:51:25.637 に答える