循环列表项

时间:2016-04-15 21:31:10

标签: python list python-3.x optimization

我有一个项目列表,我想定期“循环”,访问第一个(第0个)项目,然后将其移动到列表的后面。完成此任务的最佳方法是什么?我想要的语法如下所示。

packageurl <- "https://cran.r-project.org/src/contrib/Archive/xgboost/xgboost_0.4-1.tar.gz"
install.packages(packageurl, repos=NULL, type="source")

2 个答案:

答案 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]