我的程序目前需要用户输入("hello"
)。然后它保存输入的长度(5
),并从条例值中创建一个列表,例如:
list = []
word = "hello"
for i, item in enumerate(word):
list.append(ord(word[i]))
这给了我一个列表:[104, 101, 108, 108, 111]
。
从这个输出中我想尝试获得[1, 0, 2, 3, 4]
如果愿意,我想尝试增加'计数',即使数字重复也是如此。希望这更清楚一点,对不起,我很难解释我想要实现的目标。
提前致谢。
另一个例子是“@test123
”,它会给出一个列表:
[64, 116, 101, 115, 116, 49, 50, 51, 64]
我想要的输出是:[4, 8, 5, 6, 7, 0, 1, 2, 3]
。我真的不确定这是否可行,但如果我能管理它会很好。
答案 0 :(得分:2)
l = []
word = "hello"
for i, item in enumerate(word):
l.append(ord(word[i]))
sorted(range(len(l)), key=lambda x:l[x])
<强>输出强>
[1, 0, 2, 3, 4]
答案 1 :(得分:1)
>>> import numpy as np
>>>
>>> list(np.argsort(np.argsort(list('hello'))))
[1, 0, 2, 3, 4]
>>> list(np.argsort(np.argsort(list('cadeb'))))
[2, 0, 3, 4, 1]
如果无法使用第三方模块,请使用以下argsort
:
>>> def argsort(xs):
... return sorted(range(len(xs)), key=xs.__getitem__)
...
>>> argsort(argsort('hello'))
[1, 0, 2, 3, 4]
>>> argsort(argsort('cadeb'))
[2, 0, 3, 4, 1]