为什么我必须在 while 循环中使用另一个“循环”变量放置一个变量

这是我的代码:


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 放在 while 之外,但它不起作用,所以即使我找到了解决方案,我也不明白为什么它会那样工作。


你能解释一下吗?谢谢你的时间。


ITMISS
浏览 66回答 3
3回答

繁华开满天机

只要条件为真,while 循环就会执行一组语句。您正在使b等于第一个列表中的(element +1) No&nbsp;i 。因此,您必须将它保留在语句内,因为如果您将它保留在语句外,它将不会是i的迭代。

蝴蝶刀刀

首先,如果你把变量b放在循环之上,在你的例子中,python只根据i的值设置b变量一次。在 while 循环期间,您更改i变量但不重写b,因为它超出范围。更简单的例子:lst = [0, 1, 2, 3, 4]n = len(lst)&nbsp; # n=5i = 0b1 = lst[i]while i < n:&nbsp; &nbsp; b2 = lst[i]&nbsp; &nbsp; print(f'Loop {i+1}: b1={b1} | b2={b2}')&nbsp; &nbsp; i += 1输出:Loop 1: b1=0 | b2=0Loop 2: b1=0 | b2=1Loop 3: b1=0 | b2=2Loop 4: b1=0 | b2=3Loop 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]

哆啦的时光机

好吧,如果你不这样做,它将永远运行,但你也可以使用这样的“for”循环:import numpy as npliste=[2004, 2008, 2012, 2016, 2020, 2024, 2028, 2032, 2036, 2040, 2044, 2048, 2052, 2056, 2060,&nbsp;2064, 2068, 2072, 2076, 2080, 2084, 2088, 2092, 2096]liste2=[]for _ in range(24):&nbsp; &nbsp; b=liste[i] +1&nbsp; &nbsp; liste2.append(b)print(liste2)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python