python для л oop повторить - PullRequest
0 голосов
/ 12 февраля 2020

У меня действительно простая проблема python, но она не кажется такой простой. Я выполняю запрос к базе данных, однако он сводится к следующему принципу.

fruits = ["apple", "banana", "cherry"]
for x in fruits:
    print(x)
    fruits = ["1", "2", "3"]
    print(fruits)

Как мне получить х, чтобы перейти на новые значения?

Текущий вывод для х - это "яблоко" , "банан", "вишня", однако после того, как я поменяю фрукты, мне бы хотелось, чтобы "яблоко", "1", "2", "3"

Ответы [ 2 ]

3 голосов
/ 12 февраля 2020

Если я правильно понимаю ваш вопрос, то вы НЕ меняете коллекцию, пока выполняете ее. Что вы можете сделать, это перебрать диапазон индексов, а затем вы можете изменить коллекцию. Например:

fruits = ["apple", "banana", "cherry"]
for i in range(len(fruits)):
    print(fruits[i])
    fruits = ["1", "2", "3"]
    print(fruits)

Но будьте осторожны с индексом вне диапазона, если ваша длина fruits изменяется. Самый безопасный способ - использовать while l oop:

fruits = ["apple", "banana", "cherry"]
i = 0;
while i < len(fruits):
    print(fruits[i])
    fruits = ["1", "2", "3"]
    print(fruits)
    i += 1

Если вы хотите полностью сбросить итерации в том же l oop, что является очень странным сценарием, но вы можете сделать:

fruits = ["apple", "banana", "cherry"]
i = 0
while i < len(fruits):
    print(fruits[i])
    newFruits = ["1", "2", "3"]
    if newFruits != fruits:
        i = -1
        fruits = newFruits
    print(fruits)
    i += 1

Помните, что этот код неэффективен, потому что:

  1. Вы присваиваете новый массив на каждой итерации, что может привести к утечке памяти.
  2. Сравнение массивов O (n) операция сложности.

Для лучшего кода требуется больше информации о проблеме.

0 голосов
/ 12 февраля 2020

Ваш вопрос неясен, но чтобы переместить ваши первые печатные заявления с "apple", "banana", "cherry" на "1", "2", "3", вы можете сделать:

fruits = ["apple", "banana", "cherry"]
for x in fruits:
    print(x)
fruits = ["1", "2", "3"]
for x in fruits:
    print(x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...