不明白为什么 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)
我有一些代码可以:
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)