Из того, что я получаю, проводя эксперименты, это.
a = a + 1
объединяет список и целое число, но, как мы знаем, +
оператор или конкатенация требуют двух списков, поэтому мы получаем ошибку
TypeError: can only concatenate list (not "range") to list
, как мы видим ниже
In [43]: [] + 1
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-43-67dee89361ae> in <module>
----> 1 [] + 1
TypeError: can only concatenate list (not "int") to list
In [47]: [] + []
Out[47]: []
- В
a += 1
мы внутренне называем a.extend(1)
согласно документам: https://docs.python.org/3/library/stdtypes.html#mutable-sequence-types
s.extend (t) или s + = t.
расширяет s содержимым t (по большей части такое же, как s [len (s): len (s)] = t)
Также из документов по адресу: https://docs.python.org/3/tutorial/datastructures.html
list.extend (итерация)
Расширьте список, добавив все элементы из итерируемого. Эквивалентен [len (a):] = повторяемый.
Таким образом, 1
рассматривается как итеративный, но поскольку int не является итеративным, мы получаем ошибку TypeError: 'int' object is not iterable
, как мы видим ниже
In [49]: a = []
In [50]: a.extend(1)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-50-4671950943e4> in <module>
----> 1 a.extend(1)
TypeError: 'int' object is not iterable