list_1 = [1,2,3,4]
list_2 = ['1','2','3','4']
list_3 = map(int,list_2)
print(sum(list(map(int,list_1))))
print(sum(list(list_3)))
print(sum(list_3))
运行结果是 10,10,0
但是调整代码后
list_1 = [1,2,3,4]
list_2 = ['1','2','3','4']
list_3 = map(int,list_2)
print(sum(list(map(int,list_1))))
print(sum(list_3))
print(sum(list(list_3)))
运行结果仍然是10,10,0
想知道原因
因为 map()返回的是迭代对象,list_3为迭代对象,迭代对象只能遍历一次,
迭代对象遍历了一次之后内部的迭代指针指向最后一个元素之后,
第二次遍历时从上次迭代指针指向的位置(最后一个元素之后)开始遍历,自然就没有了.
先用list()把迭代对象转成列表就可以多次遍历了
list_3 = map(int,list_2) #list_3为迭代对象
改成
list_3 = list(map(int,list_2)) #list_3为列表
list_1 = [1,2,3,4]
list_2 = ['1','2','3','4']
list_3 = list(map(int,list_2))
print(sum(list(map(int,list_1))))
print(sum(list_3))
print(sum(list_3))
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
大概因为list_3属于生成器,在第6行后其中元素已被耗尽,第7行相当于对空列表求和