![](/img/trans.png)
[英]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.