【问题标题】:define many variables from the elements in a list从列表中的元素定义许多变量
【发布时间】:2017-12-05 16:09:17
【问题描述】:

我想定义 500 个变量。所有这些都应该是从二项分布生成的随机数。然后我想在 HTML 页面中显示它们中的每一个。

我的代码如下:

# draw a number from the distribution
def a1s1(self):
    return 3 * np.random.binomial(1, 0.3)

# get rid of the decimal point
def a1s1int(self):
    return int(self.a1s1())

# define 500 variables
number1 = models.FloatField()
number2 = models.FloatField()
....# this should continue in this way until "number500"

# generate a list of 500 random numbers
def drawnumbers(self):
    rnlist = []
    numbers = dict()
    for i in range(1, 500):
        numbers[i] = self.a1s1int()
        rnlist.append(numbers)
    return numbers

# to get each element from the list
number1 = self.drawnumbers[1]
number2 = self.drawnumbers[2]

这给了我错误:

NameError: name 'self' is not defined

有时我收到另一个错误“NoneType”不可调用。

你能帮忙吗?我对 Python 真的很陌生。非常感谢。

【问题讨论】:

  • 看来您是 Python 新手。与其直接跳到 numpy 之类的模块,不如考虑学习一些基础教程,例如变量、条件和循环结构、列表和字典等数据结构、函数和 OOP。
  • 首先,代码最后两行的变量self 从未定义过。你必须在某个地方定义它。同样,你认为你调用了一个函数,但你没有。其次,不要使用名称self,因为它在类方法中用作对对象的引用。第三,你到底为什么想要 500 个命名变量而不是一个 500 个元素的列表?
  • 我想在点击 html 页面上的按钮时显示每个元素。单击一次,显示一个。再次单击,显示第二个。我实际上认为一个 500 元素的列表就足够了。我只是不知道如何将列表中的元素传递给html页面

标签: python list callable


【解决方案1】:

最好直接建列表:

number=[int(3*np.random.binomial(1,0.3)) for i  in range(500)]

例如,您可以通过number[23] 访问它们。

【讨论】:

  • 我试过你的代码。有用。但我仍然无法访问说号码[23]。因为如果我以您的方式构建列表,则参数之一(数字 3)是由另一个函数创建的。所以它会是这样的: 'number=[int(self.p()*np.random.binomial(1,0.3)) for i in range(500)]' 。 p() 在类 a 中定义。 Python给出了“未定义自我”的错误。如果我把“self”拿出来,它给出的错误是“p() missing 1 required positional argument: 'self'”。如果我写 'def number(self): return [int(self.p()*np.random.binomial(1,0.3)) for i in range(500)]' 那么我无法访问 number[23] .
猜你喜欢
  • 2012-12-15
  • 2019-11-28
  • 1970-01-01
  • 1970-01-01
  • 2021-06-06
  • 1970-01-01
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多