Python List Of List Initialize
I know that [[]] * 10 will give 10 references of the same empty, And [[] for i in range(10)] will give 10 empty lists. But in this example: def get_list(thing): return [thing
Solution 1:
That is because thing is the same list.
In [[] for i in range(10)] a new list is generated every time.
In [thing for i in range(10)] it's always the list named thing.
Solution 2:
I now understand why I'm wrong. I answer my question:
I misunderstood the list comprehension in python
[ ___ for i in range(10)]It's not like passing a augment to a function. List comprehension execute your expression literally each time in its loop.
The expression [] in [ [] for i in range(10)] is executed each time so you get a new empty list for each entry.
Same for [thing for i in range(10)]. expression thing is executed, and the result is alway the same: a reference to one empty list.
Post a Comment for "Python List Of List Initialize"