解释python列表理解技巧

时间:2013-04-23 07:04:23

标签: python list list-comprehension

请有人请解释这段代码。

>>> 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', 'sue', 'john'), ('john', 'sue',
'sue'), ('john', 'sue', 'chris'), ('john', 'chris', 'john'), ('john', 'chris', 'sue'), ('john', 'chris', 'chris'), ('sue
', 'john', 'john'), ('sue', 'john', 'sue'), ('sue', 'john', 'chris'), ('sue', 'sue', 'john'), ('sue', 'sue', '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)正构造一个三值元组,但我不明白循环中是什么。感谢

2 个答案:

答案 0 :(得分:6)

这是一个嵌套的列表理解,你可以按照它们在理解中出现的顺序扩展循环,以了解发生了什么:

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

答案 1 :(得分: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

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

希望这有帮助!