我写了一些有关如何覆盖列表的代码,但很幸运,它无法正常工作,但不太了解它是如何工作的。如果我试图理解自己的代码,则列表麻木的长度为5,并且与range方法结合使用时,我要求循环执行5次,对吗?
我的问题的第二部分与麻木[w]有关。 numbs [w]是否引用列表中的元素?到目前为止,我已经了解到numbs_list [1]引用了numbs_list中的位置1,但我不确定numbs [w]在方程的左侧和右侧如何工作。
这是我在这里的第一篇文章,谢谢您的帮助!
numbs = [5, 10, 15, 20, 25]
for w in range(len(numbs)):
numbs[w] = numbs[w] + 5
print(numbs)
实际输出是[10, 15, 20, 25, 30]
,这正是我想要的。
答案 0 :(得分:0)
for w in range(len(numbs)):
numbs[w] = numbs[w] + 5
print(numbs)
在这里, len(numbs)= 5,因此range()返回数字序列(0到4)[range()documentaion并带有示例]
numbs [0]指向列表的第一个元素(即5)
答案 1 :(得分:0)
好的,所以有优先级之类的意思,这意味着代码的某些部分先于其他部分进行评估。如果您有赋值运算符(=),则总是在赋值发生之前先评估右侧。
所以
numbs[w] = numbs[w] + 5
被这样评估
# w gets the value from the for loop i.e. 0-4
numbs[0] + 5 # numbs[0] is 5, so this evaluates to 10
numbs[0] = 10 # the assignment takes place after the right side is evaluated
这就是列表最终使每个元素增加5
还要注意,numbs [w] = numbs [w] + 5可以写为numbs [w] + = 5
答案 2 :(得分:0)
关于第一个问题,是的,您要求它循环5次。 但是范围是这样工作的: range(n)创建一个从0到n-1而不是1到n的数字序列。 因此,
for w in range(len(numbs)):
将w的值从0迭代到4,即(5-1)
现在,您的第二个问题:
是的,您的代码引用了numb的元素。 列表的索引为零,即元素从0到n-1进行索引。因此,每当 使用numbs [w],则访问索引w处的numb元素。
例如numbs [0] = 5,numbs [1] = 10,依此类推
答案 3 :(得分:0)
我建议您将问题分解成小块,不要尝试同时使用一些您不了解的功能。使用您的打印语句来解决这一问题。
numbs = [5, 10, 15, 20, 25]
#see what value you get from range(len(numbs))
print('range(len(numbs)) = ', range(len(numbs)))
for w in range(len(numbs)):
#what is the value of w?
print('w = ', w)
#print numbs[w] before it is changed
print('numbs[w] = ', numbs[w])
numbs[w] = numbs[w] + 5
#print numbs[w] after it is changed
print('numbs[w] = ', numbs[w])
#add another print to separate the loops
print()
#print numbs after the for each loop has ran
print('new numbs = ', numbs)
然后,您可以将它们放在一起并弄清楚发生了什么。