2017-01-23 4 views
0

У меня есть следующий список:Индексирование сложного списка в Python

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

и я хочу, чтобы найти индекс отдельного подсписка его. Например: index([1,0])=1 или index([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: спасибо. Просто ввел переменную после тестирования onelined версии ... –

+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