小能豆

如何在 python 列表中返回与输入数字相同的数字的位置?

py

如何在 python 列表中返回与输入数字相同的数字的位置?


阅读 13

收藏
2024-12-18

共1个答案

小能豆

要在 Python 列表中找到与输入数字相同的数字的位置,可以使用以下方法:


方法 1:使用 list.index()

如果数字在列表中只出现一次,可以使用 list.index() 方法:

lst = [10, 20, 30, 40, 20]
num = 20

# 返回第一个匹配数字的位置
position = lst.index(num)

print(f"The number {num} is at position {position}")

输出:

The number 20 is at position 1

注意:
- 如果数字不在列表中,index() 会引发 ValueError


方法 2:使用列表解析,返回所有匹配的位置

如果数字在列表中可能出现多次,可以用列表解析找到所有出现的位置:

lst = [10, 20, 30, 40, 20]
num = 20

# 返回所有匹配数字的位置
positions = [i for i, x in enumerate(lst) if x == num]

print(f"The number {num} is at positions {positions}")

输出:

The number 20 is at positions [1, 4]

方法 3:使用 filter()

使用 filter()enumerate()

lst = [10, 20, 30, 40, 20]
num = 20

# 获取所有匹配数字的位置
positions = list(filter(lambda x: lst[x] == num, range(len(lst))))

print(f"The number {num} is at positions {positions}")

输出:

The number 20 is at positions [1, 4]

方法 4:处理数字不存在的情况

结合以上方法,添加检查,防止数字不在列表中导致异常:

lst = [10, 20, 30, 40, 20]
num = 50

# 检查数字是否存在
positions = [i for i, x in enumerate(lst) if x == num]

if positions:
    print(f"The number {num} is at positions {positions}")
else:
    print(f"The number {num} is not in the list.")

输出:

The number 50 is not in the list.

选择合适的方法

  • list.index():适合查找第一个匹配的位置。
  • 列表解析:适合查找所有匹配的位置。
  • 带检查的解析:适合需要处理数字不存在情况的场景。
2024-12-18