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

时间:2017-04-16 00:55:44

标签: python python-2.7

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

a = ['L', 'N', 'D']
b = sorted(a, reverse=True)

但输出是

b= ['N', 'L', 'D']

我在哪里犯错?

5 个答案:

答案 0 :(得分:9)

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

b = a[::-1]

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

b = list(reversed(a))

虽然第一个版本更快。

答案 1 :(得分:3)

您也可以撤销:

>>> a = ['L', 'N', 'D']

>>> a.reverse()

>>> a
['D', 'N', 'L']

但是请注意它会更改列表,不会创建(返回)新列表。

答案 2 :(得分:1)

如果要使用sorted(),可以指定索引是要排序的键:

b = sorted(a, key=a.index, reverse=True)

答案 3 :(得分:0)

你第一次几乎是对的。试试这个:

#This will sort the list temporarily into reverse alphabetical order.
print(sorted(a, reverse=True)

#This will sort the list temporarily into reverse order.
print(sorted(a, reverse=False) 

答案 4 :(得分:0)

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

a.sort(reverse=True)