不明白为什么 Map returns 迭代器使代码失败

Don't understand why Map returns iterator makes code to fail

我有一些代码可以:

map(lambda increment:
                 self.__delete_table_id_range(table, delete_field, value,
                                              delete_interval, increment),
                 range(delete_interval.min, delete_interval.max, self.purge_range))

python 2 中它工作正常,但在 python 3 中我调试并且从未调用 __delete_table_id_range 函数。

我知道 map returns 现在是 iterator,所以我将 map 更改为 list,其中:

list(map(lambda increment:
                     self.__delete_table_id_range(table, delete_field, value,
                                                  delete_interval, increment),
                     range(delete_interval.min, delete_interval.max, self.purge_range)))

并且只添加这个 __delete_table_id_range 函数运行。

我不明白为什么会这样。有人可以解释一下吗?

map 方法 return 你是一个可以用经典 for

迭代的迭代器
my_list = [1, 2, 3]
result = map(lambda index: my_list[index] * 2, range(0, len(my_list), 1))
for index, element in enumerate(result):
    print(f"Element[{index}]: {element}")

你可以这样做,但我不推荐你

result = map(lambda increment: self.__delete_table_id_range(table, delete_field, value, delete_interval, increment), range(delete_interval.min, delete_interval.max, self.purge_range))
for element in result:
    pass

在你的情况下,我认为它更适合

for index in range(delete_interval.min, delete_interval.max, self.purge_range):
    self.__delete_table_id_range(table, delete_field, value, delete_interval, increment)