2016-09-30 38 views
-1

我有一個r列表中的每個r元素的列表。 比方說r=3然後我有一些看起來像這樣:獲取表(列表)中唯一字符的索引?

list=[["o","o","o"],["o","i","o"],["o","o","o"]] 

我想,使用方法「」「list.index(item)‘’」,得到這個列表裏面的‘我’元素的索引。因此,我應該得到我想像的東西(x,y),其中x表示第x個子列表,y表示第x個子列表中的第y個元素(在這種情況下爲(1,1))。

如果您以後需要,我可以加入我的程序(遊戲)的代碼。

+0

威爾列表的大小總是長度爲r? – PrestonM

回答

1

你可以try按行找到索引行:

def findI(rows): 
    for i,row in enumerate(rows): 
     try: 
      return (i,row.index("i")) 
     except ValueError: 
      pass 

例如:

>>> x =[["o","o","o"],["o","i","o"],["o","o","o"]] 
>>> findI(x) 
(1, 1) 
+0

我終於想出了一些辦法,但它需要比您的代碼更多的代碼。你的看起來更乾淨。謝謝! – Chihab

+0

這是我的了: 高清indxi():#Recuperer干邑生產商德 「i」 的範圍丹斯place_objects() ____ X = place_objects() ____for我(LEN(X)): 在________if 「我」 × [i]: ____________ a = i ____ o = x [a] .index(「i」) ____返回(a,o) – Chihab

+0

對不起,評論混亂,我還不知道如何在代碼中正確插入代碼」。 – Chihab

0

或者你可以試試這個:

list=[["o","o","o"],["o","i","o"],["o","o","o"]] 
f = [sublist for sublist in list if element in sublist][0] 
print(list.index(f), f.index(element)) 

[0]是因爲它會返回類似[[a,b]]的東西,因爲就像一個過濾器。但我需要[a, b]。希望能幫助到你。這個問題是當元素不在列表中時失敗。

2

如果你正在尋找發現在嵌套列表中的所有值索引的解決方案,這是給你的函數:

def find_indexes(needle, lst): 
    return [(lst_idx, sub_idx) for lst_idx, sublst in enumerate(lst) 
           for sub_idx, i in enumerate(sublst) 
            if i == needle] 

您可以爲使用如下:

>>> lst = [["o","a","o"],["a","i","o"],["o","o","a"]] 
>>> find_indexes('a', lst) 
[(0, 1), (1, 0), (2, 2)]