为什么for循环中的迭代器是字符串而不是整数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么for循环中的迭代器是字符串而不是整数?相关的知识,希望对你有一定的参考价值。
这是我编写的代码:
a = "5,3,1"
print (type(a))
b = []
b = a.split(",")
print (type(b))
print (b)
for i in b:
if (int(i) % 5 == 0):
print (i)
print (type(i))
在for循环中,我期望变量i
是整数类型。但事实证明,这是一个字符串。这有什么意义?
输出
<class 'str'>
<class 'list'>
['5', '3', '1']
5
<class 'str'>
我们如何使用字符串作为迭代器来遍历列表中的列表项?此外,如果我删除了int
行中的if (int(i) % 5 == 0):
,则会出现此错误:TypeError: not all arguments converted during string formatting
我无法理解其工作原理
答案
b
是字符串列表,对吗?这是b
:
['5', '3', '1']
因此,当您开始遍历b
时,i
的每个值都将是一个字符串,因为b
中包含字符串。当您在int(i)
语句中说if
时,您正在[[not将i
更改为整数。您将获得i
的整数值。
b
是整数列表,请改用此列表:b = [int(num) for num in a.split(",")]
输出:
<class 'str'> <class 'list'> [5, 3, 1] 5 <class 'int'>
您可以看到i
现在是整数。
另一答案
将字符串分割为b时,将获得字符串列表["5", "3", "1"]
。遍历b时,循环变量i被分配给列表中的每个值,并且每个值都是一个字符串。您可以使用int(i)
将i中的值转换为整数,但是除非手动转换该值,否则它仍然是字符串。这就是为什么不能使用if i % 5
的原因,因为string % int
在Python中未定义。
以上是关于为什么for循环中的迭代器是字符串而不是整数?的主要内容,如果未能解决你的问题,请参考以下文章