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

时间:2021-05-21 21:07:15

标签: python loops for-loop

有人可以帮助我了解下面代码背后的逻辑

假设 mpg 是一个字典列表

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

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

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

new_cylinders=set(cylinders)

1 个答案:

答案 0 :(得分:0)

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

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

(我认为你也可以使用 set display 并写成 cylinders = {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)