Изменение диапазона цикла for в зависимости от длины списка для Python - PullRequest
0 голосов
/ 06 ноября 2018

Если у меня есть список:

list = [1, 2, 3, 4, 5]

И цикл for:

for i in range(len(list)):
   if list[i] > 3:
      list.clear()
      list.append(1)
print(list)

Теперь, это просто примеры, чтобы показать проблему, с которой я столкнулся, то есть я хочу перебрать список по его длине. Если я отвечаю определенному условию, я хочу изменить список. Однако затем я хочу, чтобы цикл for выполнялся в зависимости от длины нового списка. Основная причина этого и то, почему я включил list.clear (), заключается в том, что если список полностью отличается от того, который был определен, условие, которое я проверяю, будет также применяться ко всем элементам в списке, начиная с list [ 0].

Итак, я хочу, чтобы цикл for выполнялся на основе длины данного списка, затем я хочу, чтобы он запускался снова на основе длины нового списка, проверяя каждую итерацию первого списка и второй и так далее, пока я не хочу, чтобы он сломался.

Надеюсь, я был достаточно ясен с моим вопросом. Я приветствую любые предложения, которые достаточно просты, так как я начинающий. Если есть что-то, что я делаю ужасно неправильно, пожалуйста, укажите на это.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Не рекомендуется изменять список, поскольку вы перебираете его.

Вам нужен способ запустить цикл for с нуля, что можно сделать, поместив его в цикл while:

flag = True
while flag:
    for i in range(len(items)):
        if items[i] > 3:
            items.clear()
            items.append(1)
            # break out of the for loop and start over, because flag is still True
            break
        else if final_condition:
            # set flag to false and break out of for loop
            flag = False
            break
0 голосов
/ 06 ноября 2018

Почему бы тебе не написать это так:

i = 0
while True:
    if i < len(list):
       if list[i] > 3:
          list.clear()
          list.append(1)
          i += 1
    else:
       break

print(list)

Надеюсь, я вас хорошо понял.

...