如何根据另一个列表中的编号重复列出项目

时间:2019-10-23 09:29:10

标签: python

我有2个整数列表。我想重复另一个列表成员的时间。我尝试使用zip()函数以及以下代码,但遇到相同的错误

  

“ TypeError:'int'对象不可调用”

这是我的代码-

def predict_from_distribution(distribution, range):

    classes = [0, 1, 2, 3, 4, 5]
    summation = np.cumsum(distribution)
    results = []
    uniform_samples = np.random.uniform(0, 1, range)
    iterations = np.multiply(distribution, len(uniform_samples))
    iterations = [int(num) for num in iterations]
    for i in range(len(classes)):
        for x in range(iterations[i]):
            results.append(classes[i] * x)
    return print(results)


predict_from_distribution([0.2, 0.1, 0.25, 0.15, 0.25, 0.05], 50)

2 个答案:

答案 0 :(得分:4)

通过使用range作为参数名称,已使用值50覆盖了内置方法range

结果,现在调用range(...)就像写50(...)一样,这就是为什么收到错误消息TypeError: 'int' object is not callable的原因。

如果您使用其他名称作为参数名称(例如R),则您的代码可以正常工作。

import numpy as np

def predict_from_distribution(distribution, R):

    classes = [0, 1, 2, 3, 4, 5]
    summation = np.cumsum(distribution)
    results = []
    uniform_samples = np.random.uniform(0, 1, R)
    iterations = np.multiply(distribution, len(uniform_samples))
    iterations = [int(num) for num in iterations]
    for i in range(len(classes)):
        for x in range(iterations[i]):
            results.append(classes[i] * x)
    return print(results)


predict_from_distribution([0.2, 0.1, 0.25, 0.15, 0.25, 0.05], 50)

答案 1 :(得分:0)

顺便说一句,这就是我试图通过代码实现的目标,即,当实验重复“总”次数时,可以预测有偏向的骰子的类别。 (不使用任何numpy随机选择或其他分布)

将numpy导入为np

defpredict_from_distribution(总分布):

classes = [0, 1, 2, 3, 4, 5]
summation = int(sum(distribution))
if not summation == 1:
    print('Error : The sum of the probabilities do not add up to 1')
results = []
iterations = np.multiply(distribution, total)
iterations = [int(num) for num in iterations]
for i in range(len(classes)):
    for x in range(iterations[i]):
        results.append(classes[i])
return print(results)

predict_from_distribution([0.2,0.1,0.25,0.15,0.25,0.05],50)