我有一个项目列表,我想定期“循环”,访问第一个(第0个)项目,然后将其移动到列表的后面。完成此任务的最佳方法是什么?我想要的语法如下所示。
packageurl <- "https://cran.r-project.org/src/contrib/Archive/xgboost/xgboost_0.4-1.tar.gz"
install.packages(packageurl, repos=NULL, type="source")
答案 0 :(得分:4)
您可以使用itertools.cycle()
:
from itertools import cycle
L = [10, 20, 30]
cycled_list = cycle(L)
获取10件物品:
for x in range(10):
print(next(cycled_list))
输出:
10
20
30
10
20
30
10
20
30
10
使用next(cycled_list)
获取下一个项目。
注意itertools.cycle()
会复制您的列表。你可以避免这种情况
编写自己的循环迭代器函数,该函数仅适用于序列但不适用于迭代器:
def my_cycle(seq):
while seq:
for element in seq:
yield element
cycled_list = my_cycle(L)
for x in range(10):
print(next(cycled_list))
输出:
10
20
30
10
20
30
10
20
30
10
第二种方法应该是最高效的,因为它不会复制 列表中的任何部分。
答案 1 :(得分:0)
您可以将.pop()
与.append()
:
items = [1, 2, 3, 4, 5]
item = items.pop(0)
items.append(item)
print(item) # 1
print(items) # [2, 3, 4, 5, 1]