Чем обусловлено столь странное поведение при сложении list и tuple?
Заметили такую странную штуку:
>>> a = [3]
>>> a += (1,2)
>>> print(a)
[3, 1, 2]
>>> (1,2) + [3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate tuple (not "list") to tuple
>>> [3] + (1,2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "tuple") to list
Может ли кто-то объяснить почему так странно работает их сложение? -_-
Ответы (1 шт):
Автор решения: USERNAME GOES HERE
→ Ссылка
a = [1, 2, 3]
type(a)
<class 'list'>
Тут тип list
a += (4, 5)
type(a)
<class 'list'>
Логично предположить, что если переменная была типа list, то она и останется list.
А вот какой результат был бы при сложении [1, 2] + (3, 4)? Tuple или list? А если наоборот сложить сначала кортеж, а потом список? Чтоб не морочить программистам головы разработчики python решили просто запретить складывать их напрямую и все.