首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在加载屏幕的每个循环中返回列表的下一个元素

在加载屏幕的每个循环中返回列表的下一个元素
EN

Stack Overflow用户
提问于 2019-11-13 00:01:40
回答 2查看 57关注 0票数 1

我想做一个加载屏幕,每秒,它打印ab,或c一个接一个(取代前一个),并再次启动。这就是我所尝试的,但它不起作用。它每秒只打印a

代码语言:javascript
代码运行次数:0
运行
复制
from time import sleep

for i in range(10):
    sleep(1)
    print(next(iter(['\ra', '\rb', '\rc'])), end=' ')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-13 00:04:56

您需要在循环外部创建对象,否则它将每秒重新创建一次,因此您总是只获得第一个元素:

代码语言:javascript
代码运行次数:0
运行
复制
import itertools
from time import sleep

progress = itertools.cycle(['\ra', '\rb', '\rc'])

for i in range(10):
    sleep(1)
    print(next(progress), end=' ')

您也可以(也许应该)像我在这里所做的那样使用itertools.cycle,使选项在列表结束时循环回到开始。

票数 1
EN

Stack Overflow用户

发布于 2019-11-13 00:04:44

您将在每次迭代中重新创建生成器。你可以在这里使用itertools.cycle在生成器中循环:

代码语言:javascript
代码运行次数:0
运行
复制
from itertools import cycle
from time import sleep

l = cycle(['\ra', '\rb', '\rc'])
for i in range(10):
    sleep(1)
    print(next(l), end=' ')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58822389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档