我正在从事一个项目,我之前制作了一个名为salary
的列表,该列表根据某人的输入得出他们的薪水。现在,我要创建一个名为'tSalaryExpenditure'
的列表,该列表将使用列表'salary'
并加总列表中的所有元素。但是,当我进入此阶段时,我会收到一条错误消息
“ +不支持的操作数类型:'int'和'list'”。
我目前正在使用'sum'
函数,以查找解决该问题的方法,尝试了一段时间以及其他各种循环。
salary = []
for i in range(len(tData)):
tmpSalary = []
warn = 0
if total == 37.5:
fullWeek = [a*b for a,b in zip(tmpRate,Hours)]
tmpSalary.append(fullWeek)
elif total > 37.5:
fullWeek = [a*37.5 + ((b-37.5)*a)*1.5 for a,b in zip(tmpRate,Hours)]
tmpSalary.append(fullWeek)
elif total < 37.5:
fullWeek = [a*b for a,b in zip(tmpRate,Hours)]
warn += 1
tmpWarning.append(warn)
tmpSalary.append(fullWeek)
salary.append(tmpSalary)
tSalaryExpenditure = sum(salary)
答案 0 :(得分:0)
问题是当您使用列表推导时,结果是一个数组。所以你有
>>> fullWeek = [a*b for a,b in zip(tmpRate,Hours)]
>>> fullWeek
[450.0, 650.0, 700.0] # for example
因此,当您将fullWeek
附加到另一个列表时,它实际上在列表中创建了一个列表。
>>>[].append([450.0, 650.0, 700.0])
[[450.0, 650.0, 700]]
当您将tmpSalary
附加到salary
时,问题就会翻倍。因此,当您尝试在其上调用sum()
时,它只会看到外部列表对象,而看不到内部的整数。
一种修复方法是要么添加单个元素,要么指定要求和的内部列表。执行以下任一操作。
# Method 1
(...)
if total == 37.5:
fullWeek = [a*b for a,b in zip(tmpRate,Hours)]
tmpSalary += fullWeek
(...)
salary += tmpSalary
# Method 2
tSalaryExpenditure = sum(salary[0][0])