根据特定顺序对列表重新排序

时间:2018-12-12 09:52:43

标签: python list-comprehension

我想对长度为n的列表进行重新排序,其中n可以是5到20之间的任何整数。

示例列表= [1,2,3,4,5,6]

对于我生成的每个列表,我想将最后一个但只有一个元素[-2]移到列表[0]的开头,以使最终顺序变为:

new_list = [5,1,2,3,4,6]

我尝试过:

stop_process

但是这给了我列表中的一个列表:

  

[5,[1,2,3,4],6]

是否有一种简单的方法可以进行列表理解?

4 个答案:

答案 0 :(得分:2)

您可以尝试以下方法:

new_order = [myorder[-2]] + [i for i in myorder[:-2]] + [myorder[-1]]

或者,简化一下,

new_order = [myorder[-2]] + myorder[:-2] + [myorder[-1]]

答案 1 :(得分:2)

您可以使用列表切片。

例如:

l = [1,2,3,4,5,6]
print([l[-2]] + l[:-2] + l[-1:])

输出:

[5, 1, 2, 3, 4, 6]

答案 2 :(得分:1)

那呢:

>>> lst = [1, 2, 3, 4, 5, 6]
>>> lst = [lst[-2]] + lst[:-2] + [lst[-1]]
>>> lst
[5, 1, 2, 3, 4, 6]

答案 3 :(得分:1)

我认为这是最通用的方法:

example_list.insert(0, example_list.pop(-2))

您擦除(弹出)项目-2并将其插入位置0。