python - 如何在包含相同元素的另一个列表中找到一个列表的元素索引?

标签 python list

我正在尝试用 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/

相关文章:

Python按具有相同属性的列表中的相邻项目分组

r - 根据字符向量或数据框过滤 R 中的列表?

python - FOR 循环应该产生多个结果,但只产生一个

Python 更改字典中的值,该值是列表中的一项

python - 如何根据 pandas 中值的频率绘制堆积条形图?

python - 如何使用 __getattr__ 函数处理和返回 Python 类中缺少的属性和函数?

python - 使用带有 for 循环的字典来比较值

c - 打印指针值

python - 在 Python 中定义类方法的多种方法?

python - 使用 wxpython GUI 加密文件