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 letters
    True
    >>> 's' in letters
    False

    可以看到,名为 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')