我是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)。
答案 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
块}来捕获它p>
答案 1 :(得分:0)
另一种选择是同时使用append
和pop
:
>>> 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
从前面进行优化。我在这里只是提到它,以示出另一种方法,我认为乍一看有点容易理解。