在Python中list()如何影响传入它的参数?[duplicate]

8ljdwjyq  于 2023-01-08  发布在  Python
关注(0)|答案(1)|浏览(149)
    • 此问题在此处已有答案**:

Why can't I iterate twice over the same iterator? How can I "reset" the iterator or reuse the data?(5个答案)
两年前关闭了。
这是注解掉list函数的代码:

from collections import Counter

a = input().split() 
b = map(int, a) 
##c = list(b) 
d = Counter(b)

print(d)
    • 输入:1 2 3**
    • 输出:计数器({1:1、2:1、3:1)**

但是,当我删除标签,将c赋值为list(b)并重新运行代码时,会出现以下情况:

Input: 1 2 3

Output: Counter()

我的问题是,为什么计数器的输出值在b没有被赋予任何新类型的情况下会不同?据我所知,b不会受到这个操作的影响?如果这是一个愚蠢的问题,请原谅我,我对编码还是一个新手。谢谢!

3qpi33ja

3qpi33ja1#

Python map()函数用于对指定的可迭代和返回的map对象的所有元素应用一个函数,Python map对象是一个迭代器,所以我们可以迭代它的元素。

b = map(int, a)

这只会将'int'函数Map到.(不执行)中的每个元素。
当你调用迭代器时,它执行并返回值和清除。
例如

a = list(range(5))
for i in a:
 print(i)
 break

产出

0

for i in a:
 print(i)
 break

产出
然后继续。这是一种按需执行

相关问题