我有一个包含数字序列的列表,例如[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
但我的问题是如何在不创建新列表的情况下实现这一目标?也许用列表切片做点什么.. 提前谢谢。
答案 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]