如何在for循环中控制迭代器值?

问题描述

我想用Python重现这个JavaScript气泡,但是我不确定如何继续。

for (i=0;i<toks.length && toks[i]!='\r'; i+=10)

解决方法

您可以使用while编写它

cli = 'echo -e "[azure-cli] \ nname = Azure CLI \ nbaseurl = https: //packages.microsoft.com/yumrepos/azure-cli \ nenabled = 1 \ ngpgcheck = 1 \ ngpgkey = https: //packages.microsoft.com/keys/microsoft.asc "> /etc/yum.repos.d/azure-cli.repo ' 

execute "Install Azure CLI 1" do
    command "sudo rpm --import https://packages.microsoft.co/keys/microsoft.asc"
end

execute "Install Azure CLI 2" do
    command "sudo sh -c " + cli
end

execute "Install Azure CLI 3" do
    command "yes | sudo yum install azure-cli"
end
,

个人而言,我不喜欢使用索引循环,因此我建议使用for状态的python break循环(这会停止循环)。关于每个10th循环逻辑,可以使用toks[::10]来实现。

所以最终的代码是:

for v in toks[::10]:
    if v == '\r':
        break
    print(v)
,

如果您想为每个循环的迭代器变量添加10,则只需将其作为参数传递给range函数即可:

for i in range(0,MAX_ITERATIONS,10):
    pass

range函数采用3个参数:用于初始化迭代器变量的值,最大迭代次数以及每个循环要添加到迭代器变量的值(默认值为1)。

在python中这样的代码将是这样的:

for i in range(0,len(toks),10):
    if toks[i] == '\r':
        break
,

您可以使用range的第三个参数配置增量,然后在循环中检查退出条件

toks = list(range(100))
toks[30] = '\r'

for i in range(0,10):
    if toks[i] == '\r':
        break

    print(toks[i])