使用Python列表中的值交换索引?

Pur*_*ari 1 python swap list indices python-3.x

(不,这不是作业作业,也不是比赛,即使它看起来像是一个.)

A在Python中有一个包含数字的列表range(0, len(A)).这些数字不是有序的,但它们都存在于列表中.

我正在寻找一种简单的方法来构建一个列表B,其中索引和值已被交换,即一个列表,对于每个整数n,包含nin 的位置A.

例:

A = [0, 4, 1, 3, 2]
B = [0, 2, 4, 3, 1]
Run Code Online (Sandbox Code Playgroud)

我可以将代码B单独生成或生成代码生成A.特别是,我的生成方式A如下:

A = [value(i) for i in range(length)]
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?

ber*_*eal 6

如何分配到预先分配的B:

>>> A = [0, 4, 1, 3, 2]
>>> B = [0] * len(A)
>>> for k, v in enumerate(A): B[v] = k
>>> B
[0, 2, 4, 3, 1]
Run Code Online (Sandbox Code Playgroud)

那将是O(n).