使用Python在列表中查找值

使用 Python 中的 in 操作符或者 index() 方法在列表中查找特定值,

要在一个列表中查找特定的值,可以使用 Python 中的 in 操作符或者 index() 方法。

下面是使用 in 操作符的示例代码:

my_list = [1, 2, 3, 4, 5]

if 3 in my_list:

    print(“3 存在于列表中”)

else:

    print(“3 不存在于列表中”)

输出结果:

3 存在于列表中

index() 方法

index() 方法用来查找某个元素在列表中出现的位置(也就是索引),如果该元素不存在,则会导致 ValueError 错误,所以在查找之前最好使用 count() 方法判断一下。

index() 的语法格式为:

listname.index(obj, start, end)

其中,listname 表示列表名称,obj 表示要查找的元素,start 表示起始位置,end 表示结束位置。

start 和 end 参数用来指定检索范围:

  • start 和 end 可以都不写,此时会检索整个列表;
  • 如果只写 start 不写 end,那么表示检索从 start 到末尾的元素;
  • 如果 start 和 end 都写,那么表示检索 start 和 end 之间的元素。


index() 方法会返回元素所在列表中的索引值。

index() 方法使用举例:

my_list = [1, 2, 3, 4, 5]

index = my_list.index(3)

print(“3 在列表中的索引为:”, index)

输出结果:

3 在列表中的索引为: 2

如果要查找的值不在列表中,使用 in 操作符将返回 False,而使用 index() 方法将会抛出 ValueError 异常。

如果列表中有多个相同的值,那么 index() 方法只会返回第一个匹配项的索引。如果要查找所有匹配项的索引,可以使用循环结合 index() 方法来实现,

例如:

my_list = [1, 2, 3, 4, 3, 5, 3]

search_value = 3

indexes = []

for i in range(len(my_list)):

    if my_list[i] == search_value:

        indexes.append(i)

if indexes:

    print(f”{search_value} 在列表中出现的索引为:{indexes}”)

else:

    print(f”{search_value} 不存在于列表中”)

输出结果:

3 在列表中出现的索引为:[2, 4, 6]

另外,如果要查找的值是一个对象,可以使用 in 操作符或者 index() 方法的自定义比较函数来实现。

例如,假设有一个列表包含多个字典,每个字典都有一个 “name” 键表示名称,可以使用以下代码来查找名称为 “Alice” 的字典:

my_list = [{“name”: “Alice”, “age”: 20}, {“name”: “Bob”, “age”: 25}, {“name”: “Charlie”, “age”: 30}]

search_name = “Alice”

# 使用 in 操作符查找

if any(d[“name”] == search_name for d in my_list):

    print(f”{search_name} 存在于列表中”)

else:

    print(f”{search_name} 不存在于列表中”)

# 使用 index() 方法和自定义比较函数查找

def compare_name(d):

    return d[“name”]

try:

    index = my_list.index({“name”: search_name}, key=compare_name)

    print(f”{search_name} 在列表中的索引为:{index}”)

except ValueError:

    print(f”{search_name} 不存在于列表中”)

输出结果:

Alice 存在于列表中

Alice 在列表中的索引为:0

另外还可以使用 filter() 函数来查找符合条件的元素,

例如:

my_list = [1, 2, 3, 4, 3, 5, 3]

search_value = 3

# 使用 filter() 函数查找

indexes = list(filter(lambda i: my_list[i] == search_value, range(len(my_list))))

if indexes:

    print(f”{search_value} 在列表中出现的索引为:{indexes}”)

else:

    print(f”{search_value} 不存在于列表中”)

输出结果与前面的示例代码相同:

3 在列表中出现的索引为:[2, 4, 6]

需要注意的是,filter() 函数返回的是一个迭代器,需要使用 list() 函数将其转换为列表,否则无法直接打印输出。

总之,以上几种方法都可以在列表中查找特定的值,具体选择哪种方法取决于具体的需求和场景。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2023年6月20日
下一篇 2023年6月20日

相关推荐