【问题标题】:Unable to change element in list using function无法使用函数更改列表中的元素
【发布时间】:2013-11-28 18:47:34
【问题描述】:

我尝试编写一个 Python 2 程序,该程序使用两个类创建一个包含十个包含数字 0 的元素的列表,并将列表中的第三个元素替换为 1-10 之间的随机数。但是,当我调用并打印 add_number_to_list() 函数时,它返回一个未更改的列表。这是我的代码:

#coding: iso-8859-1

import random

class Slumpa:
  def __init__(self):
    pass

  def add_number_to_list(self, list):
    a = random.randint(1, 10)
    list[2] == a
    return list

class Lista:
  def __init__(self):
    self.b = Slumpa()
    self.c = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


  def add_number_to_list(self):
        return self.b.add_number_to_list(self.c)


P = Lista()
print P.add_number_to_list()

另外,如果你有一个 for 循环,比如这个:

  for i in range(0, len(lista)):
    if lista[i] == 0:
      lista[i] = a
      break

是否必须使用 break 语句才能跳出循环,还是可以使用 i = len(lista) + 1?

【问题讨论】:

  • 有趣的是,人们通常会犯相反的错误)。

标签: python list function class object


【解决方案1】:

您在

中使用了比较运算符
list[2] == a

你需要的是一个赋值运算符

list[2] = a

一些建议

  1. 切勿使用内置类型或函数名称来命名变量。在这种情况下list。有一个同名的内置函数。

  2. 代替

    self.c = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    

    你可以的

    self.c = [0] * 10
    
  3. 当你指定编码时,你可以使用

    # coding=<encoding name>
    

    # -*- coding: <encoding name> -*-
    

    不是

    #coding: iso-8859-1
    

    查看此 PEP 以了解支持的格式 http://www.python.org/dev/peps/pep-0263/

【讨论】:

    【解决方案2】:

    要给变量赋值,你必须使用=,而不是==

    比较

    >>>l = [1, 2, 3]
    >>>
    >>>l[0] == 'foo' # performs a comparison
    False
    >>>l[0] = 'foo' # assigns value
    >>>l
    ['foo', 2, 3]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      • 2020-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多