2012-04-06 55 views
0

所以我在這裏發佈了這個問題。列表python的排列

permutations of lists python

和解決方案的工作..但我應該更加小心。 請看看上面的鏈接。

,如果我沒有什麼有一個明確的列表爲A,B,C,d 但我有一個列表的列表..像

lists.append(a) 
    lists.append(b) 

等。 而在最後,我只有「名單」

在這種情況下,這

for item in itertools.product(lists): 
    print(item) 

不工作?

回答

2

開箱一切從使用*列表:

>>> import itertools 
>>> a = ["1"] 
>>> b = ["0"] 
>>> c = ["a","b","c"] 
>>> d = ["d","e","f"] 
>>> lists = [a,b,c,d] 
>>> for item in itertools.product(*lists): 
     print item 


('1', '0', 'a', 'd') 
('1', '0', 'a', 'e') 
('1', '0', 'a', 'f') 
('1', '0', 'b', 'd') 
('1', '0', 'b', 'e') 
('1', '0', 'b', 'f') 
('1', '0', 'c', 'd') 
('1', '0', 'c', 'e') 
('1', '0', 'c', 'f') 

這只是解包列表到它的元素,因此它是與調用itertools.product(a,b,c,d)。如果您不這樣做,itertools.product會將其作爲一個項目執行,它是列表的列表,[a,b,c,d]當您想要查找列表中的四個元素的乘積時。

@sberry發佈此有用鏈接:http://docs.python.org/tutorial/controlflow.html#unpacking-argument-lists

+0

嗨。不,基本上我想要列表中的元素的所有排列(如鏈接中發佈).. btw這種方法和類似a + b之間的區別是什麼?只是好奇 – Fraz 2012-04-06 06:44:37

+0

並不多,但它接受iterables並返回一個迭代器。 – jamylak 2012-04-06 06:45:46

+0

嗨..太棒了..它的作品..但是什麼「*」呢?我想我只是在Python中學到了一些新的東西:) – Fraz 2012-04-06 06:51:00