【发布时间】:2020-08-07 05:06:16
【问题描述】:
这是我写的代码:
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'>
我们如何使用字符串作为迭代器来遍历列表中的列表项?
此外,如果我删除if (int(i) % 5 == 0): 行中的int,我会收到此错误:TypeError: not all arguments converted during string formatting
我无法理解这是如何工作的
【问题讨论】:
-
您为什么希望它是
int?b == a.split()和str.split总是返回一个字符串列表,所以当你迭代一个字符串列表时,这些项目当然是字符串...注意,i不是迭代器 Python 术语。i只是一个变量,它被分配给迭代器中的下一个项目,该迭代器由您正在迭代的可迭代对象返回 -
请原谅我知识贫乏。
For循环通常有其他语言的迭代器......看起来它在 python 中有所不同 -
This answer in particular 详细介绍并解决可能来自其他语言的混淆
-
Python 确实使用基于迭代器的 for 循环。但是
i不是一个迭代器,它只是一个变量,在每次迭代时被分配来自迭代器的下一项。你想到了什么语言? 为什么您希望i成为int?你期待什么整数? -
@juanpa.arrivillaga 感谢您的参考。我现在很清楚
标签: python python-3.x