The list
object defines what it thinks multiplication is by how it implements its list.__mul__
and list.__imul__
methods. Python implementers thought that copying the contents N times into a single new list made the most sense for lists.
There is a good reason for that - they wanted multiplication to work like addition:
>>> ['th'] * 5
['th', 'th', 'th', 'th', 'th']
>>> ['th'] + ['th'] + ['th'] + ['th'] + ['th']
['th', 'th', 'th', 'th', 'th']
If you multiply a number by 5 you get a number that's five times as big, not five numbers. Similarly, if you multiply a list by 5, you get a list that's five times big, not five lists.