Почему мне нужно поместить переменную, используя другую переменную "цикла" внутри цикла while - PullRequest
0 голосов
/ 14 июля 2020

Вот мой код:

import numpy as np
i=0
liste=[2004, 2008, 2012, 2016, 2020, 2024, 2028, 2032, 2036, 2040, 2044, 2048, 2052, 2056, 2060, 
2064, 2068, 2072, 2076, 2080, 2084, 2088, 2092, 2096]
liste2=[]
while i<24:
    b=liste[i] +1
    liste2.append(b)
    i=i+1
print(liste2)

Итак, я пытаюсь создать список, который имеет те же значения, что и первый, плюс 1, поэтому, если первый список равен [201,206,207], я хочу, чтобы второй список - [202,207,208]. Я попытался поместить переменную b в другое время, но это не сработало, поэтому, хотя я нашел решение, я не понимаю, почему оно работает именно так.

Не могли бы вы объяснить? Спасибо за ваше время.

Ответы [ 3 ]

0 голосов
/ 14 июля 2020

while l oop выполняет набор операторов, пока выполняется условие. Вы делаете b равным (element +1) No i из 1-го списка. Поэтому вы должны сохранить его внутри оператора, потому что, если вы оставите его снаружи, это не будет итерация i .

0 голосов
/ 14 июля 2020

Во-первых, если вы поместите переменную b выше l oop, в вашем случае python устанавливает b переменную только один раз, исходя из значения i . Во время while l oop вы изменяете i переменную, но не перезаписываете b , потому что это выходит за рамки. Более простой пример:

lst = [0, 1, 2, 3, 4]
n = len(lst)  # n=5
i = 0
b1 = lst[i]
while i < n:
    b2 = lst[i]
    print(f'Loop {i+1}: b1={b1} | b2={b2}')
    i += 1

Вывод:

Loop 1: b1=0 | b2=0
Loop 2: b1=0 | b2=1
Loop 3: b1=0 | b2=2
Loop 4: b1=0 | b2=3
Loop 5: b1=0 | b2=4

Во-вторых, для вашей задачи вы должны использовать так называемое «понимание списка» - они более компактны и удобны для чтения. Кроме того, в вашем коде вы не используете модуль numpy, поэтому его не нужно импортировать.

lst = [0, 1, 2, 3, 4]
lst_2 = [i+1 for i in lst]
print(lst_2)

Вывод:

[1, 2, 3, 4, 5]
0 голосов
/ 14 июля 2020

Ну, если вы этого не сделаете, он будет работать вечно, но вы также можете использовать «for» l oop, например:

import numpy as np
liste=[2004, 2008, 2012, 2016, 2020, 2024, 2028, 2032, 2036, 2040, 2044, 2048, 2052, 2056, 2060, 
2064, 2068, 2072, 2076, 2080, 2084, 2088, 2092, 2096]
liste2=[]
for _ in range(24):
    b=liste[i] +1
    liste2.append(b)
print(liste2)
...