为何输出空列表?
本帖最后由 lzb1001 于 2023-6-7 16:16 编辑>>> def fun(x):
return x * 2
>>> temp = range(10)
>>> show = map(fun, temp)
>>> list(show)
>>> print(list(show)) # 为何输出空列表[]???
[]
再看下面:
>>> temp = filter(None, )
>>> print(list(temp)) # 这样可以
>>> temp = filter(None, )
>>> list(temp)
>>> print(list(temp)) # 这样不可以
[] 在Python中, map 函数返回的是一个迭代器。迭代器可以被遍历一次,但是遍历过后就无法再次使用了。它的内容会被消耗掉。
在你的代码中, list(show) 会遍历一次 show 迭代器,返回一个包含所有结果的列表。然而,在这之后, show 迭代器就已经被遍历完了,所以当你再次尝试转化为列表时,它已经没有内容可以返回了,因此结果是一个空列表。
如果你想要再次使用这个列表,你可以将它存储在一个变量中,例如:
>>> def fun(x):
return x * 2
>>> temp = range(10)
>>> show = map(fun, temp)
>>> output = list(show)# 将结果存储在变量output中
>>> print(output)
>>> print(output)# 可以再次打印output
isdkz 发表于 2023-6-7 16:22
在Python中, map 函数返回的是一个迭代器。迭代器可以被遍历一次,但是遍历过后就无法再次使用了。它的内 ...
在Python中, map 函数返回的是一个迭代器……
不单是map函数,filter函数返回的也是一个迭代器吧 lzb1001 发表于 2023-6-7 17:25
在Python中, map 函数返回的是一个迭代器……
不单是map函数,filter函数返回的也是一个迭代器吧
对的 isdkz 发表于 2023-6-7 16:22
在Python中, map 函数返回的是一个迭代器。迭代器可以被遍历一次,但是遍历过后就无法再次使用了。它的内 ...
def fun(x):
return x * 2
>>> temp = range(10)
>>> show = map(fun, temp)
>>> result = list(show) # 使用变量储存列表
>>> result
>>> print(result) # 可多次使用
>>> print(result) # 可多次使用
>>> list(show)
[]
>>> print(list(show))
[]
以上在哪步都遍历完了,导致最后 list(show)和print(list(show))都返回空列表[]??? lzb1001 发表于 2023-6-7 17:44
def fun(x):
return x * 2
result = list(show)
这里你把它转成列表的时候就把它所有的元素都遍历出来了
页:
[1]