我有一个对象列表,我想更改所有对象的属性值(相同的值 - NewValue).
map()在函数(lambda)没有返回任何值的情况下,是否比正常for循环更有效?
map ( lambda x: x.attribute = NewValue, li)
Run Code Online (Sandbox Code Playgroud)
VS
for i in li:
i.attribute = NewValue
Run Code Online (Sandbox Code Playgroud)
你不能分配一个lambda,但lambda只是一个功能的简写,所以你可以:
def set_it(x):
x.attribute = new_value
map(set_it, li)
Run Code Online (Sandbox Code Playgroud)
与明显相比:
for x in li:
x.attribute = new_value
Run Code Online (Sandbox Code Playgroud)
mapvs for循环的一般经验法则(无论是列表理解还是完整写出)map当且仅当它不调用用Python编写的函数时才更快.因此,map在这种情况下,预计会更慢.此外,直接for循环不会创建然后丢弃不需要的中间列表,因此预计map会比平常更多地丢失.
| 归档时间: |
|
| 查看次数: |
1008 次 |
| 最近记录: |