将列表中的项目从前向后移动

时间:2015-02-11 05:15:25

标签: python list python-3.x

我是python和编程的新手,所以我觉得我试图绕着最简单的东西...

假设我有12个项目列表:

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

和一个匹配列表中某个项目的变量:

b = 7

现在我想在列表中找到该匹配项,并按照相同的顺序将匹配前> 之前的每个项目移动到列表末尾,如下所示:

a = [7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6]

我将如何在python 3.4.2中执行此操作?

匹配可以是任何索引处的任何项目,但项目数量将始终相同(12)。

2 个答案:

答案 0 :(得分:4)

使用切片清单:

>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
>>> idx = a.index(7)
>>> a = a[idx:] + a[:idx]
>>> a
[7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6]

请注意,如果在数组中找不到要搜索的值,则会抛出ValueError,在这种情况下,您需要使用try - except

答案 1 :(得分:0)

另一种选择是同时使用appendpop

>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
>>> idx = a.index(7)
>>> for _ in range(idx):
...     a.append(a.pop(0))
>>> a
[7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6]

我不提倡在切片方法上使用它,因为这将非常慢(list未针对pop从前面进行优化。我在这里只是提到它,以示出另一种方法,我认为乍一看有点容易理解。