Пропустить список и изменить глобальный индекс в Python - PullRequest
0 голосов
/ 13 сентября 2018

У меня проблема с последней частью кода, который я создаю. Я пытаюсь, например, заставить список повторяться до элемента 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, что будет новым значение.

Ответы [ 3 ]

0 голосов
/ 13 сентября 2018

Я уверен, что не правильно понял ваш вопрос. Но цикл должен быть предпочтительным здесь

i=0
while i<len(li):
    if i == 3: #along with other condition
        i = li[9]
        print(i)
        continue
    i += 1
0 голосов
/ 13 сентября 2018

Еще один способ сделать это:

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)
0 голосов
/ 13 сентября 2018

Простой способ сделать то, что вы хотите, это установить флаг, если это условие выполнено, и continue через пропущенные индексы, если этот флаг равен true

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)

В качестве альтернативы, вы можете использовать времяцикл:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...