2011-10-15 71 views
0

我正在使用itertools.product函數。我有一個2層深的嵌套列表,這是一個迭代列表。我想通過這個產品功能不知道如何正確格式化。將迭代列表傳遞給itertools函數

要清楚,我想

In [37]: [k for k in product([1,2],['a','b'])] 
Out[37]: [(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')] 

但是從一個nested_list輸入這樣

nested_list = [[1,2],['a','b']] 

產生的,而是我得到

In [36]: [k for k in product(nested_list)] 
Out[36]: [([1, 2],), (['a', 'b'],)] 

回答

1

product採用可變數量的參數,所以你需要解壓縮你的列表。

list(product(*nested_list)) # without list() normally, of course 
+0

我不知道「開箱」一個列表的概念。謝謝!有沒有一種快速的方法來遍歷列表?像內置函數來完成列表理解,就像unpack操作符一樣? – alex

+0

@ user366660:您可以使用列表理解基於一個或多個已經存在的迭代器創建一個新列表(還有一些生成器表達式可以實現相同的功能,但是很懶惰;以及在Python 3中設置和詞典解釋)。還有'map'和'filter'功能,可以完成它們命名的功能。正常的迭代是用傳統的for循環語句完成的。 –