[英]Python TypeError: argument of type 'int' is not iterable problem
[英]Python 3.4 TypeError: argument of type 'int' is not iterable
我有一个数组,其中数组中的每个位置代表一个停车位。 阵列(或停车场)中每个位置的值代表停车位(汽车,摩托车等)中的内容。 showSpots函数应该显示某个车辆所在的所有点。例如,showSpots(CAR)(其中CAR = 1)应该显示保持值1的所有点(或阵列中的位置)。
但是,当我运行代码时,我得到一个'TypeError:类型'int'的参数在行上不可迭代'如果在parkingLot [x]中持有者:'
为什么我会收到此错误,我该如何解决?
我的代码:
from random import *
parkingLot = [0, 1, 0, 2, 0, 0, 1]
EMPTY = 0
CAR = 1
MOTORCYCLE = 2
def showSpots(holder):
for x in range(0, 6):
if holder in parkingLot[x]:
print(x)
def main():
print("There are cars in lots:")
showSpots(CAR)
print("There are motorcycles in lots:")
showSpots(MOTORCYCLE)
main()
我想if holder == parkingLot[x]:
. 通过这样做in
,巨蟒正试图通过迭代parkingLot[x]
并检查是否holder
是在里面。 显然,由于你不能做list(1)
,所以会引发错误。
parkingLot[x]
是一个整数,但是in
期望的序列(即列表,一个元组,一个词典等)
应该是if holder == parkingLot[x]
。 当你使用时,意味着,你正在搜索序列中的某些东西,即列表或元组或字典。
对于整数,应使用==
。
TerryA对错误完全正确。
在Python中,通过使用内置函数处理列表和其他迭代而不是直接操作列表,可以使这种错误的可能性大大降低。
在这种情况下,您可以使用列表解析来为您构建数据集。 例如:
def showSpots(holder):
for space in [ index for index,value in enumerate(parkingLot) if value == holder ]:
print (space)
enumerate
函数会将您的输入转换为索引/值对,您可以使用它来构建仅包含您关注的数据的列表。 因为您从不直接需要操作输入列表,所以无需担心列表大小,也无需混合可迭代和不可迭代的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.