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

Python 如何在包含相同元素的另一个列表中查找一个列表元素的索引?,python,list,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

我正在尝试用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
循环。

您可以使用
list.index()
方法查找列表中特定元素的索引:

indices = {}
for elem in A:
    indices[elem] = B.index(elem)
# {1: 2, 2: 4, 3: 0, 4: 1, 5: 5, 6: 3}

如果您知道
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_指数:[2,4,0,1,5,3]
此解决方案是O(n),而其他解决方案是O(n^2),因此在大型列表上速度更快。

尝试以下方法:

for x in A:
  index = B.index(x)
这里index是每次迭代时的索引变量

要保存在dict中,请执行以下操作:

indices = {}
for x in A:
  indices[x] = B.index(x)

最简单的解决办法是

A = [1, 2, 3, 4, 5, 6]
B = [3, 4, 1, 6, 2, 5]
x= [B.index(i) for i in A]

#To store the result in a dictionary to map value and corresponding index.
a=dict(zip(A,x))
这仍然是O(n^2),不是吗?它仍然是O(n^2),是的,但只使用一个for循环。至少在外部。