0

例如,我有一个列表[8,9,27,4,5,28,15,13,​​11,12]

我想改变 28 之后的数字和 27 之前的数字之间的位置。输出应该是 [15,13,​​11,12,27,4,5,28,8,9]。

我试图改变它,使用 a,b=b,a ,但它不起作用,输出中总是丢失一些数字。

如果我只改变两个数字之间的位置,a,b=b,a 是有效的,但如果我想改变两个或更多数字,它就不起作用。

有人可以给我一些提示吗?

4

2 回答 2

1
x = [8,9,27,4,5,28,15,13,11,12]
y = x[6:] + x[2:6] + x[0:2]

>>> y
[15, 13, 11, 12, 27, 4, 5, 28, 8, 9]
于 2013-11-07T06:38:36.560 回答
0

您可以使用切片:

lis = [8,9,27,4,5,28,15,13,11,12]
ind1 = lis.index(27)
ind2 = lis.index(28)
if ind1 < ind2:
    lis = lis[ind2+1:] + lis[ind1:ind2+1] + lis[:ind1]
else:
    #do something else
print lis
#[15, 13, 11, 12, 27, 4, 5, 28, 8, 9]
于 2013-11-07T06:44:31.547 回答