讀古今文學網 > 父與子的編程之旅:與小卡特一起學Python > 12.11 搜索列表 >

12.11 搜索列表

列表中有多個元素時,怎麼查找這些元素呢?對列表通常有兩種處理:

  • 查找元素是否在列表中;

  • 查找元素在列表中的哪個位置(元素的索引)。

in 關鍵字

要找出某個元素是否在列表中,可以使用 in 關鍵字,例如:

if 'a' in letters:    print "found 'a' in letters"else:    print "didn't find 'a' in letters"  

'a' in letters 部分是一個布爾或邏輯表達式。如果 a 在這個列表中,它會返回值 True,否則返回 False

術語箱

布爾(boolean)是一種只使用兩個值(1 和 0,或者 true 和 false)的算術運算。這是數學家喬治 · 布爾發明的,用 andornot 來結合 true 和 false 條件(由 1 和 0 表示)時,就會用到布爾運算,我們在第 7 章中已經見過。

可以在交互模式中試試下面的命令:

>>> 'a' in lettersTrue>>> 's' in lettersFalse  

可以看到,名為 letters 的列表中確實包含一個元素 a,但是不包含元素 s。所以 a 在列表中,而 s 不在列表中。現在可以結合使用 inremove 編寫一些代碼,保證即使值不在列表中也不會給出錯誤:

if 'a' in letters:    letters.remove('a')  

查找索引

為了找出一個元素位於列表中的什麼位置,可以使用 index 方法,如下:

>>> letters = ['a', 'b', 'c', 'd', 'e']>>> print letters.index('d')3  

所以我們知道 d 的索引是 3,這說明它是列表中的第 4 個元素。

就像 remove 一樣,如果在列表中沒有找到這個值,index 會給出一個錯誤,所以最好結合使用 in,就像這樣:

if 'd' in letters:    print letters.index('d')