2013-04-23 76 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 

列表理解只是一种更简洁地表达循环的方式。

希望这会有所帮助!