python - 'for' 循环和映射之间的区别

标签 python python-3.x function

从标题来看,是的,有区别。现在应用于我的场景:让我们考虑一个类 Dummy:

class Dummy:
    def __init__(self):
        self.attached = []

    def attach_item(self, item):
        self.attached.append(item)

如果我使用这个:

D = Dummy()
items = [1, 2, 3, 4]
for item in items:
    D.attach_item(item)

我确实得到了 D.attached = [1, 2, 3, 4]。但是如果我将函数 attach_item 映射到 itemsD.attached 仍然为空。

map(D.attach_item, items)

它在做什么?

最佳答案

一个非常有趣的问题,有一个有趣的答案。

map 函数返回一个可迭代的 Map 对象。 map 正在延迟执行其计算,因此除非您迭代该对象,否则该函数不会被调用。

如果你这样做:

x = map(D.attach_item, items)
for i in x:
    continue

会出现预期的结果。

关于python - 'for' 循环和映射之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51671132/

相关文章:

python - Conda 环境未显示在 VS Code 中

python - 使用 Python 进行 Google 搜索网页抓取

python - 卷积层 - 定义输出 tensorflow

使用指针引用调用函数而不分配地址

python - 按日期时间绘制数据框 按月、年、日分组

python - 如何从端口读取通讯内容?

python - 使用 Python 3.x 还是 2.x?

python - PyPy 3.5 上的 Pandas 明显比 Python 3.6 慢

jquery - 使用函数内的变量设置新变量

Javascript百分比计算器加法器功能不起作用