2024-10-01 09:33:48 发布
网友
有人能帮我理解下面代码背后的逻辑吗
假设mpg是一个字典列表
cylinders = set(d['cyl'] for d in mpg)
我写了这段代码,但我正在寻找一些帮助来总结它在一行
cylinders=list() for d in mpg : cylinders.append(d['cyl']) new_cylinders=set(cylinders)
在set(...)里面的东西叫做agenerator expression。当出现“裸”时,它们需要用括号括起来,但当它们作为函数调用的单个参数出现时,括号可以省略
set(...)
生成器表达式返回一个生成器,该生成器根据需要将生成一系列值。在这种情况下,set()函数将执行要求的操作,并构建一个列示结果的函数。(因此,您不需要显式.add的原因是,您提供了一系列值来构建集合。)
set()
.add
(我想你也可以用aset display写cylinders = {d['cyl'] for d in mpg})
cylinders = {d['cyl'] for d in mpg}
那么如何在生成器表达式中打印内容呢?嗯,在for之前的东西必须是一个表达式;只产生一个值的东西。您可以使用一个辅助功能:
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}
在
set(...)
里面的东西叫做agenerator expression。当出现“裸”时,它们需要用括号括起来,但当它们作为函数调用的单个参数出现时,括号可以省略生成器表达式返回一个生成器,该生成器根据需要将生成一系列值。在这种情况下,
set()
函数将执行要求的操作,并构建一个列示结果的函数。(因此,您不需要显式.add
的原因是,您提供了一系列值来构建集合。)(我想你也可以用aset display写
cylinders = {d['cyl'] for d in mpg}
)那么如何在生成器表达式中打印内容呢?嗯,在
for
之前的东西必须是一个表达式;只产生一个值的东西。您可以使用一个辅助功能:有没有一个例子说明这一点
完成功能后,您将有:
相关问题 更多 >
编程相关推荐