跳过列表并在python中修改全局索引

问题描述 投票:-1回答:3

我正在创建一个代码的最后一部分的问题。例如,我试图使列表正常迭代到第3项,但然后检查项目是否为3和其他条件(现在无关紧要),然后将索引更改为从示例10迭代。

我做了很多尝试,但它似乎没有用。

li = [3, 8, 1, 2, 6, 2, 2, 3, 3, 5, 4, 5, 5, 4, 2, 1, 5, 5, 3, 5, 4, 6]
'''
HERE COMES OTHER CODE WHICH WORKS BASED ON THE ITERATION
'''
for i in range(0,len(li)):
    print(i)
    if i == 3: #along with other condition
        def g(li):
            global i
            i = li[9]
        g()
        print(i)

也许如果在这里不清楚,我正在寻找的是当3和另一个条件达到条件时,然后它跳到索引9以继续从9开始迭代脚本的其余部分,这将是新值。

python list iteration
3个回答
2
投票

我相信我的问题没有问题。但是,虽然循环应该是首选

i=0
while i<len(li):
    if i == 3: #along with other condition
        i = li[9]
        print(i)
        continue
    i += 1

0
投票

一个简单的方法来做你想要的是在满足条件时设置一个标志,如果该标志为真,则设置continue到跳过的索引

li = [3, 8, 1, 2, 6, 2, 2, 3, 3, 5, 4, 5, 5, 4, 2, 1, 5, 5, 3, 5, 4, 6]
'''
HERE COMES OTHER CODE WHICH WORKS BASED ON THE ITERATION
'''
do_skip = False
for i in range(len(li)):

    if i == 3: #along with other condition
        do_skip = True

    # don't skip past a certain point
    if do_skip and i < 9:
        continue

    print(i)

或者,您可以使用while循环:

li = [3, 8, 1, 2, 6, 2, 2, 3, 3, 5, 4, 5, 5, 4, 2, 1, 5, 5, 3, 5, 4, 6]
'''
HERE COMES OTHER CODE WHICH WORKS BASED ON THE ITERATION
'''
i = 0
while i < len(li):

    if i == 3: #along with other condition
        i = 9

    print(i)

    # other loop operations go here

    i += 1

0
投票

还有另一种方法:

li = [3, 8, 1, 2, 6, 2, 2, 3, 3, 5, 4, 5, 5, 4, 2, 1, 5, 5, 3, 5, 4, 6]
flag = True # Conditional Flag
for x, i in enumerate(li):
  if x > 2 and not flag: break
  if 3 > x or x > 8: print(x, "has a value of", i)
© www.soinside.com 2019 - 2024. All rights reserved.