簡體   English   中英

Python 3.4 TypeError:'int'類型的參數不可迭代

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM