(不,这不是家庭作业也不是竞赛,尽管它看起来像竞赛。)
我在 Python 中有一个列表 A,其中包含数字 range(0, len(A))。数字不分先后,但都存在于列表中。
我正在寻找一种简单的方法来构建列表 B,其中交换了索引和值,即对于每个整数 n,包含的列表n 在 A 中的位置。
例子:
A = [0, 4, 1, 3, 2]
B = [0, 2, 4, 3, 1]
我可以将生成 B 的代码单独放在生成 A 的代码中。特别是,这是我生成 A 的方式:
A = [value(i) for i in range(length)]
执行此操作的最佳方法是什么?
请您参考如下方法:
如何分配给预分配的 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]
那将是 O(n)。
