1
我有一個清單,需要提取每個項目;最終編寫他們的笛卡爾產品。Python:從清單列表中提取
from itertools import product
b = {}
a = [[1, 2], [3, 4], ['a', 'b']]
for i, v in enumerate(a):
b[i] = v
#These don't work because we are feeding a single list to product
print list(product(x for x in a)) # [([1, 2],), ([3, 4],), (['a', 'b'],)]
print list(product(b.values())) # [([1, 2],), ([3, 4],), (['a', 'b'],)]
的product
工作正常,如果我能得到這樣的:使用*
print list(product([1, 2], [3, 4], ['a', 'b']))
[(1, 3, 'a'), (1, 3, 'b'), (1, 4, 'a'), (1, 4, 'b'), (2, 3, 'a'), (2, 3, 'b'), (2, 4, 'a'), (2, 4, 'b')]
整潔。我多次見過'*'操作符。它到處都有類似的工作嗎? –
在函數調用(像上面那樣)是的。但是當你在函數定義中使用它時,它是不同的。然後它意味着任何數量的位置參數(並且所有這些位置參數都會在'*'之後用名稱放入列表中)。 –
是的,這意味着你希望允許任意數量的參數。正確嗎? –