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

📅  最后修改于: 2022-05-13 01:54:49.607000             🧑  作者: Mango

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

有时,在使用Python列表时,我们会遇到必须在列表中搜索元素的问题。但这可以扩展到一个列表,并且需要找到元素在其他列表中出现的确切位置。让我们讨论可以执行此任务的某些方式。

方法 #1:使用循环 + count()
这是执行此任务的粗暴方法。在这种情况下,我们可以只计算一个元素在其他列表中的出现,如果我们找到它,那么我们将它的索引添加到结果列表中。

# Python3 code to demonstrate working of
# Indices list of matching element from other list
# Using loop + count()
  
# initializing lists
test_list1 = [5, 7, 8, 9, 10, 11]
test_list2 = [8, 10, 11]
  
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
  
# Indices list of matching element from other list
# Using loop + count()
res = []
i = 0
while (i < len(test_list1)):
    if (test_list2.count(test_list1[i]) > 0):
        res.append(i)
    i += 1
  
# printing result 
print("The matching element Indices list : " + str(res))
输出 :
The original list 1 is : [5, 7, 8, 9, 10, 11]
The original list 2 is : [8, 10, 11]
The matching element Indices list : [2, 4, 5]

方法 #2:使用列表理解 + set() + enumerate()
上述功能的组合可用于执行任务。在这些中,我们只需将列表转换为 set,然后使用enumerate()检查索引和值是否存在,如果找到则附加索引。

# Python3 code to demonstrate working of
# Indices list of matching element from other list
# Using list comprehension + set() + enumerate()
  
# initializing lists
test_list1 = [5, 7, 8, 9, 10, 11]
test_list2 = [8, 10, 11]
  
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
  
# Indices list of matching element from other list
# Using list comprehension + set() + enumerate()
temp = set(test_list2)
res = [i for i, val in enumerate(test_list1) if val in temp]
  
# printing result 
print("The matching element Indices list : " + str(res))
输出 :
The original list 1 is : [5, 7, 8, 9, 10, 11]
The original list 2 is : [8, 10, 11]
The matching element Indices list : [2, 4, 5]