繁体   English   中英

为什么我得到这个TypeError:'int'对象不是可迭代的python?

[英]Why do i get this TypeError: 'int' object is not iterable 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

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]):
    # ...

如果要将索引和元素放在一起,则确实应该使用enumerate() 那就是它的目的。 另一方面, range()一次给您一个对象:一个整数。 而且,由于每个整数只有一个对象,因此无法将每个整数解压缩为两个对象。 这就是为什么for i in range(num):是这样的常见构造,而for i,j in range(num):不是这样的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM