为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

ITMISS 2023-03-08 10:08:38
这是我的代码:import numpy as npi=0liste=[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+1print(liste2)所以我试图创建一个与第一个列表值相同的列表加 1,所以如果第一个列表是 [201,206,207],我希望第二个列表是 [202,207,208]。我试图将变量 b 放在 while 之外,但它不起作用,所以即使我找到了解决方案,我也不明白为什么它会那样工作。你能解释一下吗?谢谢你的时间。
查看完整描述

3 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

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



查看完整回答
反对 回复 2023-03-08
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

首先,如果你把变量b放在循环之上,在你的例子中,python只根据i的值设置b变量一次。在 while 循环期间,您更改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]


查看完整回答
反对 回复 2023-03-08
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

好吧,如果你不这样做,它将永远运行,但你也可以使用这样的“for”循环:


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)


查看完整回答
反对 回复 2023-03-08
  • 3 回答
  • 0 关注
  • 61 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信