找到所有先前元素的总和后,我试图将列表转换为元组,但这给了我
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]
时总是会产生错误
答案 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