我遇到了这个抓取问题,它本身是无关紧要的,但想知道是否可以从列表理解执行map(),这意味着可迭代是列表理解?
以下返回我期望的空列表
[0, 2, 4, 6, 8]
:
def foo() -> list[int]:
result: list = []
map(result.append, [x for x in range(10) if x % 2 == 0])
print(result)
我想问题是map函数本身的可迭代是否可以是列表理解?这个具体的例子本身并不重要。
map 函数的可迭代本身是否可以是列表理解?
当然可以。
返回我期望的空列表 [0, 2, 4, 6, 8] :
map
是懒。您从未收集过地图的结果,因此从未对其进行评估。
当然,列表理解计算为一个列表,这是一个适合
map
的可迭代对象。
您的情况的问题是
map
返回的迭代器从未使用过,因此 result.append
从未被调用。