2013-03-31 3 views
1

Начинающий здесь, изучая python, задавался вопросом.Индексирование массива в Python

Это дает мне второй элемент:

list = [1,2,3,4] 
list.index(2) 
2 

Но когда я попытался это:

list = [0] * 5 
list[2] = [1,2,3,4] 
list.index[4] 

Я получаю сообщение об ошибке. Есть ли способ вытащить индекс элемента из массива, независимо от того, в какой список он помещен? Я знаю, что это возможно со словарями:

info = {first:1,second:2,third:3} 
for i in info.values: 
print i 
1 
2 
3 

Есть ли что-то подобное для списков?

+1

Как @BurhanKhalid сказал: * не использовать список в качестве имени переменной, потому что его также название встроенных function 'list' * – jamylak

+1

Вы уверены, что в первом примере возвращается' 2'? Это должно быть «1». – omz

+1

Причина, по которой вы получаете такой широкий диапазон ответов, заключается в том, что никто не может быть уверен, что именно вы ожидаете *, что произойдет в каждом случае и * почему *. Не говоря уже о том, что ваши примеры не соответствуют действительности; первый должен отдать «1», а не «2», как указал @omz. –

ответ

2

В вашем втором примере, список будет выглядеть следующим образом:

[0, 0, [1, 2, 3, 4], 0, 0] 

Там нет поэтому ни один элемент 4 в списке.

Это связано с тем, что, когда вы установили list[2], вы меняете третий элемент, не обновляя дополнительные элементы в списке.

Если вы хотите заменить диапазон значений в списке, используйте нотацию для нарезки, например list[2:] (для «каждый элемент от третьего до последнего»).

В целом, метод .index работает с идентификаторами. Таким образом, следующий будет работать, потому что вы спрашиваете питон, где конкретный список объекты вставленные идут в списке:

lst = [0]*5 
lst2 = [1,2,3,4] 
lst[2] = lst2 
lst.index(lst2) # 2 
11

Метод index не делать то, что вы ожидаете. Для того, чтобы получить элемент с индексом, вы должны использовать [] синтаксис:

>>> my_list = ['foo', 'bar', 'baz'] 
>>> my_list[1] # indices are zero-based 
'bar' 

index используется, чтобы получить индекс из пункта:

>>> my_list.index('baz') 
2 

Если вы спрашиваете, есть ли какой-нибудь способ получите index, чтобы перечислить в под-списки, ответ - нет, потому что он должен был бы вернуть что-то, что вы могли бы затем передать в [], а [] никогда не переходит в под-списки.

3

Ответ на ваш вопрос - нет, но у вас есть другие проблемы с вашим кодом.

Во-первых, не используйте list в качестве имени переменной, так как это также имя встроенной функции list.

Во-вторых, list.index[4] не соответствует list.index(4); оба будут давать ошибки в вашем случае, но это две разные операции.

0

Если вы хотите вывести индекс определенного элемента, то функция индекса поможет.Тем не менее, enumerate будет сделать то же словарю, например,

>>> l=['first','second','third'] 
>>> for index,element in enumerate(l): 
...  print index,element 
... 

выход

0 first 
1 second 
2 third 
Смежные вопросы