更改列表中的数字顺序而不创建新的数字

时间:2015-12-11 01:05:16

标签: python list math

我有一个包含数字序列的列表,例如[1,2,3,4,5,6,7,8,9,10]
我必须以某种方式交换它,所以列表将像这样重新包装:
[1,10,2,9,3,8,4,7,5,6]
所以,最后一个在第一个之后,第二个在第二个之后等。 我喜欢创建一个新列表:

seq = [1,2,3,4,5,6,7,8]
def repack(seq):
    new_seq = []
    while len(seq):
        new_seq.append(seq.pop(0))
        new_seq.append(seq.pop())
    return new_seq

但我的问题是如何在不创建新列表的情况下实现这一目标?也许用列表切片做点什么.. 提前谢谢。

1 个答案:

答案 0 :(得分:1)

结果来自:

[1,10,2,9,3,8,4,7,5,6]

 1,   2,  3,  4,  5  
   10,  9,  8,  7,  6

你可以看到前五项是[1,2,3,4,5],然后我们将[10,9,8,7,6]插入位置[1,3,5,7, 9]。

您可以尝试这种方式:

>>> for i in range(5):
        item = a.pop()
        a.insert(i*2 + 1, item)
>>> a
[1,10,2,9,3,8,4,7,5,6]