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)的算术运算。这是数学家乔治 · 布尔发明的,用 and、or 和 not 来结合 true 和 false 条件(由 1 和 0 表示)时,就会用到布尔运算,我们在第 7 章中已经见过。
可以在交互模式中试试下面的命令:
>>> 'a' in letters
True
>>> 's' in letters
False
可以看到,名为 letters 的列表中确实包含一个元素 a,但是不包含元素 s。所以 a 在列表中,而 s 不在列表中。现在可以结合使用 in 和 remove() 编写一些代码,保证即使值不在列表中也不会给出错误:
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')
