如何重新排序列表?

Niy*_*yaz 97 python

如果我有一个列表[a,b,c,d,e]如何以任意方式重新排序项目,如[d,c,a,b,e]

编辑:我不想改变他们.我想以预定义的方式重新排序它们.(例如,我知道旧列表中的第3个元素应该成为新列表中的第一个元素)

AJ.*_*AJ. 207

你可以这样做

mylist = ['a', 'b', 'c', 'd', 'e']
myorder = [3, 2, 0, 1, 4]
mylist = [mylist[i] for i in myorder]
print(mylist)         # prints: ['d', 'c', 'a', 'b', 'e']
Run Code Online (Sandbox Code Playgroud)

  • 这会创建一个新变量。如何就地重新排序列表?谢谢 (3认同)
  • @Confounded只需将最后一行更改为:`mylist[:] = [mylist[i] for i in myorder]` (2认同)

Mar*_*ark 11

>>> import random
>>> x = [1,2,3,4,5]
>>> random.shuffle(x)
>>> x
[5, 2, 4, 3, 1]
Run Code Online (Sandbox Code Playgroud)


Sil*_*ost 10

>>> a = [1, 2, 3]
>>> a[0], a[2] = a[2], a[0]
>>> a
[3, 2, 1]
Run Code Online (Sandbox Code Playgroud)

  • 我只是无法理解语法,直到我意识到这是一个[成对同时赋值](/sf/ask/610797141/)。´:-) (3认同)

Rap*_*rre 6

最终顺序是否由索引列表定义?

>>> items = [1, None, "chicken", int]
>>> order = [3, 0, 1, 2]

>>> ordered_list = [items[i] for i in order]
>>> ordered_list
[<type 'int'>, 1, None, 'chicken']
Run Code Online (Sandbox Code Playgroud)

编辑:嗯。AJ速度更快... 如何在python中重新排序列表?