cj *_*ehi 4 python list-comprehension list
请有人请解释这段代码.
>>> guest=['john','sue','chris']
>>> [(a,b,c) for a in guest for b in guest for c in guest]
Run Code Online (Sandbox Code Playgroud)
有了这些结果......
[('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')]
Run Code Online (Sandbox Code Playgroud)
我理解(a,b,c)正构造一个三值元组,但我不明白循环中是怎么回事.谢谢
这是一个嵌套的列表理解,你可以按照它们在理解中出现的顺序扩展循环,以了解发生了什么:
result = []
for a in guest:
for b in guest:
for c in guest:
# yield (a,b,c)
result.append((a,b,c))
Run Code Online (Sandbox Code Playgroud)