如何打印出已排序 python 列表的所有项目的原始索引

0 python arrays sorting

我有一个清单

a=[2,7,23,4563,23]. 
Run Code Online (Sandbox Code Playgroud)

如何在一行中打印所有元素的索引?

基本上,我必须对列表进行排序并打印原始索引作为输出。例子:

A=[4,5,3,7,1]
Run Code Online (Sandbox Code Playgroud)

排序后新数组变为

A=[1,3,4,5,7]
Run Code Online (Sandbox Code Playgroud)

所需的输出应该是

4 2 0 1 3
Run Code Online (Sandbox Code Playgroud)

Moh*_*ish 5

更新:
如果你想排序然后显示它们的原始位置,你可以使用numpy.array感谢@tdelaney 来识别 numpy 实际上会更慢

在一行中:

print(" ".join(str(i) for i,v in sorted(enumerate(a), key=lambda x: x[-1])))
Run Code Online (Sandbox Code Playgroud)

为了

a=[2,7,23,4563,23]
Run Code Online (Sandbox Code Playgroud)

输出:

0 1 2 4 3    
Run Code Online (Sandbox Code Playgroud)


如果您想value:index在一行中打印表单中的元素值和索引,您可以尝试:

print(' '.join(str(v)+':'+str(i)for i,v in enumerate(a)))
Run Code Online (Sandbox Code Playgroud)

输出:

2:0 7:1 23:2 4563:3 23:4
Run Code Online (Sandbox Code Playgroud)

  • 但是 `enumerate(np.array(a))` 产生的结果与 `enumerate(a)` 相同。Numpy 只会减慢速度。 (2认同)