2013-03-31 116 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說:不要使用列表作爲變量名,因爲它也內置名函數'list' * – jamylak

+1

你確定在第一個例子中返回了'2'嗎?它應該是'1'。 – omz

+1

你得到如此廣泛的答案的原因是,沒有人真的可以確切地確定你在哪種情況下會發生什麼,以及爲什麼*。更何況,你的例子並不符合現實;像@omz指出的那樣,第一個應該給出'1'而不是'2'。 –

回答

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