Python seems to differentiate between [x]
and list(x)
when making a list object, where x
is an iterable. Why this difference?
>>> a = [dict(a=1)]
>>> a
[{'a': 1}]
>>> a = list(dict(a=1))
>>> a
['a']
While the 1st expression seems to work as expected, the 2nd expression works more like iterating a dict this way:
>>> l = []
>>> for e in {'a': 1}:
... l.append(e)
>>> l
['a']
[x]
is a list containing the element x
.
list(x)
takes x
(which must already be iterable!) and turns it into a list.
>>> [1] # list literal
[1]
>>> ['abc'] # list containing 'abc'
['abc']
>>> list(1)
# TypeError
>>> list((1,)) # list constructor
[1]
>>> list('abc') # strings are iterables
['a', 'b', 'c'] # turns string into list!
The list constructor list(...)
- like all of python's built-in collection types (set, list, tuple, collections.deque, etc.) - can take a single iterable argument and convert it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With