我写了一个简单的脚本来模拟基于每用户平均收入(ARPU),保证金和客户保留客户的年数(ltvYears)的客户终身价值(LTV).下面是我的脚本.它在此行抛出错误"ltvYears = ltvYears + [ltv_loop]".错误消息是"TypeError:只能将元组(不是"列表")连接到元组".有人能告诉我是什么原因引起的吗?我怀疑问题可能源于"ltvYears =('f',[])",其中我添加了类型代码以消除另一个错误(将浮点乘以int).
我是Python的新手,因此很可能在这段代码中出现初学者错误.
lowYears = 0
highYears = 20
modeYears = 3
ARPU = 65.0*12.0
MARGIN = .30
ltvYears = ('f',[])
ltv = []
def ltv(arpu, years, margin):
return arpu * years * margin
N = 10000
for n in range(N):
#estimate LTV
ltv_loop = random.triangular(lowYears, highYears, modeYears)
ltvYears = ltvYears + [ltv_loop]
ltv = ltv + [ltv(ARPU, ltvYears, MARGIN)]
show = 0
if (show==1):
#plot ltv histogram
plt.hist(ltv,bins=10)
plt.title("LTV Probability Density")
plt.xlabel("")
plt.ylabel("$")
plt.show()
Run Code Online (Sandbox Code Playgroud)
编辑 - 这是我的变量的屏幕截图.

EDIT2 ---由于下面的帮助,我找到了解决方案.总共有三个问题:
+1 @DonCallisto和@RikPoggi获得有关第2项和第3项的帮助
Rik*_*ggi 11
ltvYears 是一个元组,它被定义为
ltvYears = ('f',[])
Run Code Online (Sandbox Code Playgroud)
所以说到这一行:
ltvYears = ltvYears + [ltv_loop]
Run Code Online (Sandbox Code Playgroud)
Python不知道该怎么做,因为你的错误明确告诉我:
"TypeError:只能将元组(不是"列表")连接到元组"
不清楚该行的行为应该是什么,因此很难提出解决方案.
也许你只需要将ltvYears定义为a list并调用该.append方法.
这里的OP说:
ltvYears = ('f',[])我添加了'f'以指示该数组是否包含浮点数.在我这样做之前,我得到了关于乘法浮点数和整数的错误.
你不需要这样做.Python不是C.
做就是了:
ltvYears = []
Run Code Online (Sandbox Code Playgroud)
然后:
ltvYears.append(ltv_loop)
Run Code Online (Sandbox Code Playgroud)