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

2024-06-13 14:25:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有数字序列的列表,例如[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

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


Tags: 列表newlenreturndef方式情况切片
1条回答
网友
1楼 · 发布于 2024-06-13 14:25:46

结果来自:

[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],然后我们在[1,3,5,7,9]位置插入[10,9,8,7,6]

您可以这样尝试:

>>> 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]

相关问题 更多 >