解释python列表理解技巧

2024-04-20 07:22:36 发布

您现在位置: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', '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)正在构造一个三值元组,但我不明白循环是怎么回事。谢谢


Tags: 代码inforjohnchris元组guestue
2条回答

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

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

如果用这种方式重写代码,您可能会理解:

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

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

希望这有帮助!你知道吗

相关问题 更多 >