📜  Python|其他列表中匹配元素的索引列表(1)

📅  最后修改于: 2023-12-03 15:04:24.344000             🧑  作者: Mango

Python | 其他列表中匹配元素的索引列表

在Python中,我们可能需要根据另一个列表的元素,寻找一个原列表中的元素或元素的索引。这是一个很常见的问题,可以用Python内置函数和列表解析来解决。

使用index()函数

index()函数可以返回一个元素在列表中的索引。如果该元素不在列表中,则会抛出ValueError错误。我们可以在循环中使用index()函数来寻找另一个列表中元素在原列表的索引。

fruits = ['apple', 'banana', 'cherry', 'apple', 'banana', 'apple']
search_list = ['banana', 'cherry']

indices = []
for item in search_list:
    indices.append(fruits.index(item))
    
print(indices)   # 输出结果为:[1, 2]
使用列表解析

使用列表解析可以使代码更简洁。我们可以像下面这样使用列表解析来寻找另一个列表中元素在原列表的索引。

fruits = ['apple', 'banana', 'cherry', 'apple', 'banana', 'apple']
search_list = ['banana', 'cherry']

indices = [fruits.index(item) for item in search_list]

print(indices)   # 输出结果为:[1, 2]

需要注意的是,如果在另一个列表中有重复的元素,则会返回第一个匹配的元素的索引。

fruits = ['apple', 'banana', 'cherry', 'apple', 'banana', 'apple']
search_list = ['banana', 'banana']

indices = [fruits.index(item) for item in search_list]

print(indices)   # 输出结果为:[1, 1]
使用enumerate()函数

使用enumerate()函数可以返回一个元素的索引和值。我们可以在循环中使用enumerate()函数,对比另一个列表中的元素和原列表中的元素是否相同,从而得到匹配的元素的索引列表。

fruits = ['apple', 'banana', 'cherry', 'apple', 'banana', 'apple']
search_list = ['banana', 'cherry']

indices = [index for index, item in enumerate(fruits) if item in search_list]

print(indices)   # 输出结果为:[1, 2, 4]

需要注意的是,如果另一个列表中有重复的元素,在结果中会返回重复的索引。

fruits = ['apple', 'banana', 'cherry', 'apple', 'banana', 'apple']
search_list = ['banana', 'banana']

indices = [index for index, item in enumerate(fruits) if item in search_list]

print(indices)   # 输出结果为:[1, 4]

以上就是Python中寻找另一个列表中元素在原列表的索引的几种方法。无论选择哪一种方法,都可以达到同样的效果。