3 回答
TA贡献1799条经验 获得超9个赞
一个非常有趣的问题,它有一个有趣的答案。
该map函数返回一个可迭代的Map对象。map正在懒惰地执行其计算,因此除非您迭代该对象,否则不会调用该函数。
因此,如果您这样做:
x = map(D.attach_item, items)
for i in x:
continue
预期的结果将显示出来。
TA贡献1851条经验 获得超3个赞
map只创建一个迭代器。您应该遍历它以将项目添加到中D.attached。像这样:
D = Dummy()
items = [1, 2, 3, 4]
list(map(D.attach_item, items))
是的,不要在您的代码中这样做:)但是该示例仅对理解有用。
TA贡献1836条经验 获得超3个赞
引用文档
返回一个迭代器,该迭代器将函数应用于所有可迭代项,并产生结果。
这意味着您必须收集迭代器,例如
list(map(D.attach_item, items))
> [None, None, None, None]
嗯,很奇怪。为什么没有,没有,...
是的,您可以在map语句中转换任何循环,但这并不总是有用的。Map接受一个参数并对其执行某些操作(在大多数情况下),然后返回该参数,而没有副作用!这是一个例子:
def add(a):
return a + 3
list(map(add, items))
> [4, 5, 6, 7]
当您将其与其他功能(例如, filter
def add(a):
return a + 3
def odd(a):
return a % 2 == 1
list(map(add, filter(odd, items)))
> [4, 6]
添加回答
举报