我正在尝试用 python 编写这个简单的任务(更大项目的一部分):
我有两个列表,第一个列表,比方说 A = [1, 2, 3, 4, 5, 6]
是排序的,第二个列表,比方说 B = [3, 4, 1, 6, 2, 5]
未排序。我想要实现的是获取列表 B
中排序列表 A
的每个元素的索引值。例如,当我搜索元素 A[5] = 6
时,我想得到索引 i = 3
的结果。我已经以简单的方式实现如下:
for i in range(6):
for j in range(6):
if A[i] == B[j]:
index = j
我想想出一种方法,将它减少到只有一个循环,而不是这两个嵌套的 for
循环。
最佳答案
如果您知道 B
中的所有值都是唯一的,一种方法是创建一个字典,将 B
中的值映射到它们的索引。
b_dict = {}
for i, b in enumerate(B):
b_dict[b] = i
然后,遍历 A
并从 b_dict
中获取所有值。
a_indices = [b_dict[a] for a in A]
根据您的列表,我们得到
A: [1, 2, 3, 4, 5, 6]
B: [3, 4, 1, 6, 2, 5]
a_indices: [2, 4, 0, 1, 5, 3]
此解决方案的复杂度为 O(n),而其他解决方案的复杂度为 O(n^2),因此在大型列表上会快得多。
关于python - 如何在包含相同元素的另一个列表中找到一个列表的元素索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64468623/