如何在Python中覆盖列表

时间:2019-07-04 04:56:53

标签: python python-3.x list overwrite

我写了一些有关如何覆盖列表的代码,但很幸运,它无法正常工作,但不太了解它是如何工作的。如果我试图理解自己的代码,则列表麻木的长度为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],这正是我想要的。

4 个答案:

答案 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)

然后,您可以将它们放在一起并弄清楚发生了什么。