Why does adding to a list do different things?

list, python

Solution

`list.__iadd__()` can take any iterable; it iterates over it and adds each element to the list, which results in splitting a string into individual letters. `list.__add__()` can only take a list.

Problem

``` >>> aList = [] >>> aList += 'chicken' >>> aList ['c', 'h', 'i', 'c', 'k', 'e', 'n'] >>> aList = aList + 'hello' Traceback (most recent call last): File "<pyshell#16>", line 1, in <module> aList = aList + 'hello' TypeError: can only concatenate list (not "str") to list ``` I don't get why doing a `list += (something)` and `list = list + (something)` does different things. Also, why does `+=` split the string up into characters to be inserted into the list?

Original source

Related problems