Ошибка типа: неподдерживаемый тип (ы) операнда для ошибок + =: 'int' и 'tuple' - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь преобразовать список в кортеж после нахождения суммы всех предыдущих элементов, но он дает мне 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 голосов
/ 03 марта 2019

С одной петлей:

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

Выход:

[(1, 2), (2, 3), (3, 5), (4, 8), (5, 12)]
0 голосов
/ 03 марта 2019

В конце первой итерации элементы в 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)]
...