如何在Python中修复“ +不支持的操作数类型:'int'和'list'”

时间:2019-06-21 13:50:43

标签: python list int

我正在从事一个项目,我之前制作了一个名为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)

1 个答案:

答案 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])