将列表中的项目从前移到后
Move items in list from front to the back
我是 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)。
使用列表切片:
>>> 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
块捕获它
另一种选择是同时使用 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
s 未针对从正面 pop
ing 进行优化)。我只是在这里提到它来展示另一种我认为乍一看更容易理解的方法。
我是 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)。
使用列表切片:
>>> 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
块捕获它
另一种选择是同时使用 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
s 未针对从正面 pop
ing 进行优化)。我只是在这里提到它来展示另一种我认为乍一看更容易理解的方法。