[node() for _ in range(100)]
And as I said in my comment:
class node(object):
def __init__(self, children=None):
if children is None: children = []
self.children = children
If you used def __init__(self, children= []):
, any changes you make to the list will change for all instances:
In [18]: class node(object):
....: def __init__(self, children = []):
....: self.children = children
....:
In [19]: n1= node()
In [20]: n2 = node()
In [21]: n1.children.append("foo") # add using n1
In [22]: n1.children
Out[22]: ['foo']
In [23]: n2.children # also effects n2's children list
Out[23]: ['foo']
Correct way:
In [24]: class node(object):
....: def __init__(self, children=None):
....: if children is None: children = []
....: self.children = children
....:
In [25]: n1= node()
In [26]: n2 = node()
In [27]: n1.children.append("foo")
In [28]: n1.children
Out[28]: ['foo']
In [29]: n2.children
Out[29]: []