为什么我得到这个TypeError:“int”对象不是可iterable python?

2024-05-21 05:52:21 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么这种类型会出错? 通常,我现在使用enumerate(),但我特别希望在给定的范围内迭代:

r1 = (0,0,100,100)
r2 = (20,20,40,40)
r3 = (40,40,80,80)
these_objects = []
objects.append(r1)
objects.append(r2)
objects.append(r3)
objects_clone = copy.copy(these_objects)
iterations = int(len(objects_clone))-1
print(iterations)

for this_index, this_object in range(0, iterations):
    # ...

例外情况:

2
Traceback (most recent call last):
  File "test/test.py", line 50, in <module>
    for this_index, this_object in range(0, iterations):
TypeError: 'int' object is not iterable

Tags: inforindexobjectsobjectclonethisint
2条回答

如果您希望索引和元素在一起,那么确实应该使用enumerate()。这就是它的用途。range()另一方面,一次给你一个对象:一个整数。而且,因为每个整数只有一个对象,所以不能将每个整数解压为两个对象。这就是为什么for i in range(num):是如此常见的构造,而for i,j in range(num):不是。

range(0, iterations)对象生成整数,而不是元组。您要求for循环将每个整数解压为两个变量:

for this_index, this_object in range(0, iterations):

解包整数失败:

>>> this_index, this_object = 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable

您可以在一秒钟内迭代索引并提取对象:

for this_index in range(iterations):
    this_object = objects_clone[this_index]
    # ...

如果要枚举除最后一个对象之外的所有对象,则可能要忽略最后一个元素:

for this_index, this_object in enumerate(objects_clone[:-1]):
    # ...

相关问题 更多 >