2013-04-23 59 views
4

請有人可以請解釋一下這段代碼。解釋python列表理解技巧

>>> guest=['john','sue','chris'] 
>>> [(a,b,c) for a in guest for b in guest for c in guest] 

有了這些結果...(我很抱歉無法在代碼塊中獲取它)。 ('john','john','john'),('john','john','sue'),('john','john','chris'),('john','john','''') ','sue','john'),('john','sue', 'sue'),('john','sue','chris'),('john','chris',' ('john','chris','sue'),('john','chris','chris'),('sue ','john','john'),('sue ','約翰','起訴'),('起訴','約翰','克里斯'),('起訴','起訴','約翰'),('起訴','起訴','起訴'),('s' ue','sue','chris'),('sue','chris','john'),('sue','chris','sue'),('sue ','chris','chris'),('chris','john','j ohn'),('chris','john','sue'),('chris','john', 'chris'),('chris','sue','john'),('chris','sue','sue'),('chris' ,'sue','chris'), chris','chris','john'),('chris','chris','sue'),('chris','chris','chris')]

我明白(a,b,c)正在構造一個三值元組,但我不明白接下來會發生什麼。由於

回答

6

這是一個嵌套列表理解,你可以在它們出現在修真明白髮生了什麼相同的順序展開循環:

result = [] 
for a in guest: 
    for b in guest: 
    for c in guest: 
     # yield (a,b,c) 
     result.append((a,b,c)) 
+0

啊謝謝你的幫助 – 2013-04-23 07:16:26

1

也許,如果代碼被重寫這樣你會能夠理解:

guest=['john','sue','chris'] 
three_guest_list = []  

for a in guest: 
    for b in guest: 
     for c in guest: 
      three_guest_list.append((a,b,c)) 

print three_guest_list 

列表理解只是一種更簡潔地表達循環的方式。

希望這會有所幫助!