Python 如何根据其他列表中的编号重复列表项
我有两个整数列表。我想从另一个列表中重复一个列表成员的时间。我尝试使用zip()函数和下面的代码,但我得到了相同的错误 'TypeError:'int'对象不可调用' 这是我的密码-Python 如何根据其他列表中的编号重复列表项,python,Python,我有两个整数列表。我想从另一个列表中重复一个列表成员的时间。我尝试使用zip()函数和下面的代码,但我得到了相同的错误 'TypeError:'int'对象不可调用' 这是我的密码- def predict_from_distribution(distribution, range): classes = [0, 1, 2, 3, 4, 5] summation = np.cumsum(distribution) results = [] uniform_sam
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)
通过使用
range
作为参数名,您已经用值50
覆盖了内置方法range
因此,现在调用range(…)
与编写50(…)
一样-这就是为什么会出现错误消息TypeError:“int”对象不可调用的原因
如果您使用其他名称作为参数名(例如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)
顺便说一下,这就是我试图用代码实现的,即当实验重复“总”次数时,预测有偏差骰子的类别。(不使用任何numpy随机选择或其他分布)
将numpy作为np导入
def根据_分布预测_(分布,总计):
从分布预测(0.2,0.1,0.25,0.15,0.25,0.05,50)不要使用范围作为参数变量名称我理解我的错误。谢谢:)
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)