【问题标题】:Python List Doesn't UpdatePython 列表不更新
【发布时间】:2017-10-28 17:21:05
【问题描述】:

我正在尝试解决 Python 上一个看似简单的问题。我正在尝试将列表的最后 3 个元素更新为其他整数。代码如下:

list = [0,1,2,3,4]
for i in xrange(len(list[2:])):
    list[2:][i] = 44444

print list 

但是当我打印列表时,它仍然保持不变。我观察了调试器的变化,发现列表没有在循环中更新。我尝试在 Google 和 Stack Overflow 上搜索其他地方,但没有一个提供这个简单问题的答案。

让我知道你们对此有何看法。谢谢。

【问题讨论】:

    标签: python list loops integer


    【解决方案1】:

    列表的切片是一个新列表;它没有引用原件或类似的东西。改为分配给list[2 + i]。 (您可以避免制作额外的切片来以相同的方式获取长度。)

    list = [0, 1, 2, 3, 4]
    for i in xrange(len(list) - 2):
        list[2 + i] = 44444
    
    print list 
    

    【讨论】:

      【解决方案2】:

      切片会创建一个新列表,除非您分配给它:

      >>> values = [0, 1, 2, 3, 4]
      >>> values[-3:] = [4444] * 3
      >>> values
      [0, 1, 4444, 4444, 4444]
      

      【讨论】:

        【解决方案3】:

        通过使用for i in xrange(len(list[2:])):,您将列表的长度从 5 减少到 3。您的循环将仅针对前 3 个列表项进行迭代。 相反,您可以这样做:

        a=[0,1,2,3,4,5]
        for i in range(3,len(a)):
           a[i]=444
        print(a)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-03-04
          • 2021-08-18
          • 2015-02-24
          • 1970-01-01
          • 1970-01-01
          • 2021-04-30
          • 2022-01-24
          相关资源
          最近更新 更多