Python?List?index()方法
創(chuàng)新互聯(lián)公司長期為成百上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為伊通企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè),伊通網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
描述
index()?函數(shù)用于從列表中找出某個(gè)值第一個(gè)匹配項(xiàng)的索引位置。
語法
list.index(obj)
參數(shù)
obj?--?查找的對象。
返回值
該方法返回查找對象的索引位置,如果沒有找到對象則拋出異常。
實(shí)例
以下實(shí)例展示了?index()函數(shù)的使用方法:
#!/usr/bin/python
aList?=?[123,?'xyz',?'zara',?'abc'];
print?"Index?for?xyz?:?",?aList.index(?'xyz'?)?;
print?"Index?for?zara?:?",?aList.index(?'zara'?)?;
#以上實(shí)例輸出結(jié)果如下:
Index?for?xyz?:??1
Index?for?zara?:??2
如果 list 存儲(chǔ)了若干復(fù)雜結(jié)構(gòu)的值,比如這樣的一個(gè)列表:
temp = [('a', 1, 1.5),
('b', 2, 5.1),
('c', 9, 4.3)]
你想找到其中是 ('b', XX, XX) 這樣的元素,其中 XX 可以為任意值。這種情況無法通過 index 函數(shù)來獲得,我們可以利用 sort 的 key 參數(shù)來實(shí)現(xiàn)。
list.sort(或者 sorted 函數(shù))有一個(gè) key 參數(shù),你可以提供一個(gè)函數(shù)來作為排序的依據(jù)。此時(shí)我們可以傳入以下值:
temp.sort(key = lambda x:x[0]!='b')
隨后我們會(huì)發(fā)現(xiàn),所有形如 ('b', XX, XX) 的元素全部浮動(dòng)到了列表的頭部,此時(shí)我們訪問 temp[0] 就可以獲得想要查找的值了。
我們也可以寫一個(gè)簡單的函數(shù):
findindex = lambda self,i,value:sorted(self,key=lambda x:x[i]!=value)[0]
那我們只需要這樣調(diào)用:
findindex(temp,0,'b')
就會(huì)返回它找到的第一個(gè)值:
('b',2)
查看python內(nèi)置函數(shù)的方法:1、打開Python IDLE編輯器;2、輸入" dir(__builtins__)"命令,按下回車鍵(Enter)得到Python全部內(nèi)置變量和函數(shù)。
如何查看 Python 全部內(nèi)置變量和內(nèi)置函數(shù)?
1 如圖,打開 Python IDLE,我用的 是 Python 3.7 ,界面有個(gè)性定制。你的版本不同,界面有差異,但是操作方法應(yīng)該是一樣的。
2 輸入 dir(__builtins__)
按下回車鍵(Enter)。
3 也可以:
import builtins
dir(builtins)
按下回車鍵(Enter)。
得到的結(jié)果和 dir(__builtins__) 是一樣的。
4 那么這返回的一大堆到底是什么東西?
可以看到,返回的結(jié)果是以 [ 開頭以 ] 結(jié)尾,說明是個(gè)列表,我們看看這列表里一共有多少個(gè)元素?
輸入:
len(dir(__builtins__))
得到一個(gè)數(shù)字,154 ,說明當(dāng)前版本的 Python 內(nèi)置的常量和函數(shù)總數(shù)是 154 。
5 我們再重新輸出一下這個(gè)列表,逐個(gè)打印出來,更好看一點(diǎn)。
for item in dir(__builtins__):
print(item)
按下兩次回車鍵(Enter)。按照默認(rèn)的字母順序,先是大寫字母 A-Z,然后是下劃線(_)開頭的,然后是小寫字母 a-z ,為什么是這個(gè)順序?因?yàn)榘凑?ASCII 碼表,表示小寫字母的數(shù)字比表示大寫字母的數(shù)字要大,而表示下劃線(_)的數(shù)字居中,所以如此。
6 print() 就是 Python 3 的默認(rèn)函數(shù)。我們試試:
print('Hello World')
builtins.print('Hello World')
__builtins__.print('Hello World')
運(yùn)行結(jié)果如下,可以看到,結(jié)果是一樣的。
dir()本身就是 Python 的內(nèi)置函數(shù),利用它,我們可以查看對象的全部方法和屬性,對于掌控全局,了解全貌很有用。
課程推薦:Python快速教程之從入門到精通
def?prime(n):
if?n=2:
return?[]
result=[False,False]+[True]*(n-2)
for?i?in?range(len(result)):
if?result[i]==True:
for?j?in?range(2*i,len(result),i):
result[j]=False
return?[i?for?i?in?range(len(result))?if?result[i]==True]
def?bi_search(prime,primelist,start,end):
if?startend?:
return?-1
mid=(start+end)//2
if?primelist[mid]==prime:
return?mid
elif?primelist[mid]prime:????????????????
end=mid-1
else:
start=mid+1
return?bi_search(prime,primelist,start,end)
if?__name__=='__main__':
n=int(raw_input())
primelist=prime(n)
num=raw_input()
while?num:
num=int(num)
index=bi_search(num,primelist,0,len(primelist)-1)
print(index)
num=raw_input()
1、方法一: 利用數(shù)組自身的特性 a.index(target), 其中a是目標(biāo)list,target是需要的下標(biāo)對應(yīng)的值。代碼如下:
可知索引為2。但是如果a中有多個(gè)76元素,這種方法僅僅能獲取都第一個(gè)匹配的value的下標(biāo)索引。
2、方法二:利用enumerate函數(shù)。
代碼如下:
運(yùn)行結(jié)果:
擴(kuò)展資料:
python通過索引的操作(Python包含6種內(nèi)建序列:列表、元組、字符串、Unicode字符串、buffer對象、xrange對象):
1、索引:
負(fù)數(shù)索引與正數(shù)索引之間存在一個(gè)規(guī)律: 當(dāng)正數(shù)索引+負(fù)數(shù)索引的絕對值=元素的個(gè)數(shù),它們所指的是同一個(gè)元素。
2、分片:
分片用于截取某個(gè)范圍內(nèi)的元素,通過:來指定起始區(qū)間(左閉右開區(qū)間,包含左側(cè)索引值對應(yīng)的元素,但不包含右測索引值對應(yīng)的元素)。
分片包括起始索引對應(yīng)的元素,但不包括終止索引對應(yīng)的元素,索引為正值時(shí)可以發(fā)生越界但只會(huì)取到最后一個(gè)元素。如果索引值為負(fù)值,則表示從最右邊元素開始,此時(shí)需避免索引越界。