2017-01-23 70 views
0

一個複雜的名單上有以下列表:索引在python

list = [[[0, 0]], [[1, 0], [0, 1]], [[2, 0], [1, 1], [0, 2]]] 

,我想找到它的一個單獨的子表的索引。例如:index([1,0])=1index([1,1])=4等(遵循list的相同排序),問題在於,由於前一列表的結構,項目[a,b]未被單獨考慮。

有人知道如何有效地做到這一點?感謝您的關注。

+0

訪問列表是一個非常基本的任務。請在發佈一個新問題之前做一些研究,並且可能會找到一個教程(如[官方Python教程](https://docs.python.org/3.6/tutorial/index.html))。 – TigerhawkT3

+0

@ TigerhawkT3:不確定重複。它尋找一個索引。 –

+0

@ Jean-FrançoisFabre - 我明白了。在這種情況下,OP看起來像要部分壓扁任意嵌套的列表,然後找到給定元素的索引,這聽起來太寬泛了。不過,我會重新開放,以便VTC可以太寬泛。 – TigerhawkT3

回答

1

可以執行扁平列表上的搜索:

l = [[[0, 0]], [[1, 0], [0, 1]], [[2, 0], [1, 1], [0, 2]]] 
flattened = list(itertools.chain.from_iterable(l)) 

print(flattened.index([1,1])) 

結果:

4 
+0

你可能是指'flattened.index([1,1])' –

+0

@ Ev.Kounis:謝謝。只是在測試了版本後才引入變量... –

+0

非常感謝! – Joe

0

的.index( '術語')似乎只是正常工作

mylist = [[[0, 0]], [[1, 0], [0, 1]], [[2, 0], [1, 1], [0, 2]]] 

In: mylist.index([[0,0]]) 
Out: 0 

In: mylist.index([[1,0],[0,1]]) 
Out: 1 

希望它有助於!


編輯:

你還可以:

y = [1,1] 

counter = 0 

for x in list: 

    if y in x: 

     print (counter) 

    counter = counter + 1 
+0

OP想要通過嵌套子列表進行多級索引。 – TigerhawkT3

+0

哦,好吧。 thx,發佈新的解決方案 – epattaro