需要一些帮助来理解循环吗

2024-10-01 09:33:48 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能帮我理解下面代码背后的逻辑吗

假设mpg是一个字典列表

cylinders = set(d['cyl'] for d in mpg)

我写了这段代码,但我正在寻找一些帮助来总结它在一行

cylinders=list()
for d in mpg :
    cylinders.append(d['cyl'])

new_cylinders=set(cylinders)

Tags: 代码in列表newfor字典逻辑list
2条回答

set(...)里面的东西叫做agenerator expression。当出现“裸”时,它们需要用括号括起来,但当它们作为函数调用的单个参数出现时,括号可以省略

生成器表达式返回一个生成器,该生成器根据需要将生成一系列值。在这种情况下,set()函数将执行要求的操作,并构建一个列示结果的函数。(因此,您不需要显式.add的原因是,您提供了一系列值来构建集合。)

(我想你也可以用aset displaycylinders = {d['cyl'] for d in mpg}

那么如何在生成器表达式中打印内容呢?嗯,在for之前的东西必须是一个表达式;只产生一个值的东西。您可以使用一个辅助功能:

def print_and_return(x):
    print(x)
    return x

cyls = set(print_and_return(d['cyl']) for d in mpg)

有没有一个例子说明这一点

mpg = [ {'make':'Ford','cyl':12}, {'make':'Toyota','cyl':9}, {'make':'Rolls Royce','cyl':16} ]

完成功能后,您将有:

new_cylinders = {12, 9, 16}

相关问题 更多 >