【发布时间】:2019-05-28 03:08:28
【问题描述】:
我是python新手,我正在学习lambda和map,但是当我尝试一些事情时,我发现一个循环没有执行,我想知道为什么。
我知道这样做是没有用的,但是当我迭代同一个列表两次时,第二次不会执行。
salarios = map(lambda emp: emp.salario, empleados)
print("------SALARIO-------")
for salario in salarios:
print(salario)
print("-----SALARIO2--------")
for salario in salarios:
print(salario)
我明白了
-----SALARIO------ 6700 7500 2100 2150 1800 -----SALARIO2--------
我希望得到
-----SALARIO------ 6700 7500 2100 2150 1800 -----SALARIO2-------- 6700 7500 2100 2150 1800
为什么会这样?这是一些 lenguaje 优化吗?
【问题讨论】:
-
yup
map只运行一次...重复 -
了解生成器
-
您可以将多次迭代的 map() 结果保存在一个列表中,这可能有助于显示此处发生的情况:
salarios = list(map(lambda emp: emp.salario, empleados))。在 python 2 中,地图自动返回列表。 -
@DanFarrell 我正要这么说!是的,做
list(map(...))就可以了。 -
问题可能来自于在 python 2 中使用
map来执行所有操作(从循环到洗碗)的坏习惯。我曾经也这样做了一小段时间,只是为了炫耀map和lambda(如果我可以在同一个表达式中使用reduce,那就更好了)
标签: python arrays python-3.x for-loop