按相反顺序对列表进行排序

m0_*_*_as 3 python python-2.7

我有一个列表a = ['L','N','D'].我想颠倒a中元素的顺序并得到b = ['D','N','L'].我试过这个:

a = ['L', 'N', 'D']
b = sorted(a, reverse=True)
Run Code Online (Sandbox Code Playgroud)

但输出是

b= ['N', 'L', 'D']
Run Code Online (Sandbox Code Playgroud)

我在哪里弄错了?

blo*_*tfc 12

如果你想使用sorted(),你可以指定索引作为排序的键:

b = sorted(a, key=a.index, reverse=True)
Run Code Online (Sandbox Code Playgroud)


Ror*_*ton 9

您的错误是使用sorted,它按元素的顺序重新排列列表,并忽略元素的位置.而是使用

b = a[::-1]
Run Code Online (Sandbox Code Playgroud)

a以相反的顺序遍历列表.你也可以使用

b = list(reversed(a))
Run Code Online (Sandbox Code Playgroud)

虽然第一个版本更快.


Azm*_*sov 5

如果你想进行就地反向排序,你也可以这样做:

a.sort(reverse=True)
Run Code Online (Sandbox Code Playgroud)