1. 程式人生 > 其它 >Python基礎教程:兩種獲取list中指定元素的索引

Python基礎教程:兩種獲取list中指定元素的索引

在平時開發過程中,經常遇到需要在資料中獲取特定的元素的資訊,如到達目的地最近的車站,櫥窗裡面最貴的物品等等。

方法一:
利用陣列自身的特性 list.index(target), 其中a是你的目標list,target是你需要的下標對應的值

li = [10,8,9,26,72,6,28]
print(li.index(8))

但是,如果a中有多個8呢?
我們發現,這種方法僅僅能獲取都第一個匹配的value的下標(可以試試o_o)

所以,我們看看我們的第二種方案:

方法二:
利用enumerate函式。

>>> li = [10,8,9,26,72,6,28]
>>> print (enumerate(li))
<enumerate object at 0x0000000002B9A990>

原來enumerate的輸出型別是enumerate object物件,所以,我們可以如下

'''
學習中遇到問題沒人解答?小編建立了一個Python學習交流群:531509025
尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的視訊學習教程和PDF電子書!
'''
>>> li
[10, 8, 9, 26, 72, 6, 28]
>>> print(list(enumerate(li)))
[(0, 10), (1, 8), (2, 9), (3, 26), (4, 72), (5, 6), (6, 28)]
>>> print([i for i,j in enumerate(li) if j == 8])
[1]

再看,如果a中有多個‘8’呢?

>>> li.append(8)
>>> li.append(8)
>>> li
[10, 8, 9, 26, 72, 6, 28, 8, 8]
>>> print(li.index(8))
1
>>> print(list(enumerate(li)))
[(0, 10), (1, 8), (2, 9), (3, 26), (4, 72), (5, 6), (6, 28), (7, 8), (8, 8)]
>>> print([i for i,j in enumerate(li) if j == 8])
[1, 7, 8]

可見,list的index()方法是在list中找到第一個匹配的值。

而enumerate是將list(當然,也包含其它型別)中的元素元組化,然後我們利用迴圈方法獲取相應的匹配的結果。所以方案二對於重複的數值能夠一個不漏的get出來。