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

2024-10-04 01:33:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做一个项目,之前我做了一个名为salary的列表,根据某人的输入计算出他们的薪水。现在,我想创建一个名为'tSalaryExpenditure'的列表,它将获取列表'salary',并将列表中的所有元素相加。然而,当我到了这个阶段,我得到一个错误说

"unsupported operand type(s) for +: 'int' and '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)

Tags: in列表forziptotalwarnsumsalary
1条回答
网友
1楼 · 发布于 2024-10-04 01:33:54

问题是,当您使用列表理解时,结果是一个数组。所以你有

>>> 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()时,它只看到外部的list对象,而不看到内部的整数。你知道吗

解决这个问题的方法是附加单个元素,或者指定要求和的内部列表。执行下列操作之一。你知道吗

# 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])

相关问题 更多 >