TypeError:+ =不支持的操作数类型:“ int”和“ tuple”错误

时间:2019-03-03 04:41:37

标签: python python-3.x loops tuples

找到所有先前元素的总和后,我试图将列表转换为元组,但这给了我 TypeError: unsupported operand type(s) for +=: 'int' and 'tuple'

代码是

a=[1,2,3,4,5]
for i in range(len(a)):
    sum=2
    for j in range(i):
        sum+=a[j]
    a[i]=(a[i],sum)
print(a)

预期输出: [(1,2),(2,3),(3,5),(4,8),(5,12)]

还有谁能解释为什么我在sum+=a[i]时能正常工作,但是在sum+=a[j]时总是会产生错误

2 个答案:

答案 0 :(得分:3)

在第一次迭代结束时,a中的元素将成为一个元组,而在下一次迭代中,您将进行sum += a[j]。这里,sum是int,a[j]是元组。因此,您的错误。

理想情况下,您应该将元组附加到一个全新的列表中,如下所示:

a = [1,2,3,4,5]

lst = []
for i in range(len(a)):
    sum = 2
    for j in range(i):
        sum += a[j]
    lst.append((a[i], sum))

print(lst)
# [(1, 2), (2, 3), (3, 5), (4, 8), (5, 12)]

答案 1 :(得分:0)

一个循环:

cache.localSizeLong(CachePeekMode.ALL)

输出:

a = [1, 2, 3, 4, 5]
result = []
sum_ = 2
for i in a:
    result.append((i, sum_))
    sum_ += i