簡體   English   中英

Python:list.index無法找到現有元素

[英]Python: list.index fails to find existing element

有人可以向我解釋一下funcion list.index()的功能嗎? 我有以下代碼:

def getPos(self,tile):
        print self.tiles[5][5]
        print tile
        try:
           myIndex = self.tiles.index(tile)
           #some code
        except:
           print "exception raised"
           #some code

結果:

<Tile.Tile instance at 0x36BCEB8>
<Tile.Tile instance at 0x36BCEB8>
exception raised

您是否知道為什么list.index()會返回異常,盡管tile變量是對tiles [] []元素的引用? 非常感謝。

ps:順便說一下,在這種特殊情況下,我正在通過瓷磚[5] [5]

self.tiles似乎是序列的序列(例如列表或元組)。 self.tiles元素是序列,而不是tile。

self.tiles.index(tile)試圖找到一個等於tile的序列,然后失敗。

嘗試改為:

def getPos(self,tile):
    for i,row in enumerate(self.tiles):
        for j,elt in enumerate(row):
            if tile == elt:
                return (i,j)
    raise ValueError('no tile found')

雖然元素確實存在,但它不是tiles的成員:

  • tiles是一個二維列表(列表列表)。
  • tiles[5]Tile的列表。
  • tiles[5][5]是單個Tile

Python不會遞歸地下降到多維列表中以查找您正在查找的元素。 因此tiles.index(tile)失敗; tiles[5].index(tile)可以工作。

為了顯示:

>>> l = [[1,2], [3,4]]
>>> l.index(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 4 is not in list
>>> l[1].index(4)
1

tile [5] [5]和tile如何指向同一個實例? 在我看來,你在tile [5] [5]中抓取整個這個對象作為tile並嘗試將其定位為它的元素。 不明白你的意圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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