2013-06-16 2 views
1

У меня есть двумерный список, и для каждого списка в списке я хочу напечатать его индекс и для каждого элемента в каждом списке, я также хочу напечатать его индекс. Вот то, что я пробовал:Получить индекс элемента в списке

l = [[0,0,0],[0,1,1],[1,0,0]] 

def Printme(arg1, arg2): 
    print arg1, arg2 

for i in l: 
    for j in i: 
     Printme(l.index(i), l.index(j)) 

Но выход:

0 0 # I was expecting: 0 0 
0 0 #     0 1 
0 0 #     0 2 
1 0 #     1 0 
1 1 #     1 1 
1 1 #     1 2 
2 0 #     2 0 
2 1 #     2 1 
2 1 #     2 2 

Почему? Как я могу заставить его делать то, что я хочу?

+0

Это не сработает, потому что короткие замыкания 'list.index' при обнаружении первого значения, равного вашему значению поиска. – jamylak

ответ

1

Помощь по list.index:

L.index (значение, [начать, [прекратить]]) -> целое число - вернуть первый индекс значения. Повышает значение ValueError, если значение отсутствует.

Вы должны использовать enumerate() здесь:

>>> l = [[0,0,0],[0,1,1],[1,0,0]] 
for i, x in enumerate(l): 
    for j, y in enumerate(x): 
     print i,j,'-->',y 
...   
0 0 --> 0 
0 1 --> 0 
0 2 --> 0 
1 0 --> 0 
1 1 --> 1 
1 2 --> 1 
2 0 --> 1 
2 1 --> 0 
2 2 --> 0 

помощь на enumerate:

>>> print enumerate.__doc__ 
enumerate(iterable[, start]) -> iterator for index, value of iterable 

Return an enumerate object. iterable must be another object that supports 
iteration. The enumerate object yields pairs containing a count (from 
start, which defaults to zero) and a value yielded by the iterable argument. 
enumerate is useful for obtaining an indexed list: 
    (0, seq[0]), (1, seq[1]), (2, seq[2]), ... 
+0

Большое спасибо! –

+0

@AshwiniChaudhary почему бы просто не помогать (перечислять) 'для новичков гораздо проще – jamylak

+0

@jamylak ну, единственная причина - вывод' enumerate .__ doc__' проще скопировать, чем вывод 'help (enumerate)', который запускает ' Vi'. Хотя на IPython я обычно предпочитаю «перечислять?». –

0

.index(i) дает индекс возникновения i в первой. Поэтому вы всегда найдете одни и те же индексы.