varunl का वर्तमान में स्वीकृत उत्तर है
>>> l = [None] * 10
>>> l
[None, None, None, None, None, None, None, None, None, None]
संख्या जैसे गैर-संदर्भ प्रकारों के लिए अच्छी तरह से काम करता है। दुर्भाग्य से यदि आप एक सूची बनाना चाहते हैं तो आप संदर्भ त्रुटियों में चलेंगे। पायथन 2.7.6 में उदाहरण:
>>> a = [[]]*10
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append(0)
>>> a
[[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
>>>
जैसा कि आप देख सकते हैं, प्रत्येक तत्व समान सूची ऑब्जेक्ट की ओर इशारा कर रहा है। इसके आस-पास जाने के लिए, आप एक ऐसी विधि बना सकते हैं जो प्रत्येक स्थिति को एक अलग ऑब्जेक्ट संदर्भ में इनिशियलाइज़ करेगी।
def init_list_of_objects(size):
list_of_objects = list()
for i in range(0,size):
list_of_objects.append( list() ) #different object reference each time
return list_of_objects
>>> a = init_list_of_objects(10)
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append(0)
>>> a
[[0], [], [], [], [], [], [], [], [], []]
>>>
ऐसा करने की एक डिफ़ॉल्ट, अंतर्निहित अजगर विधि है (एक फ़ंक्शन लिखने के बजाय), लेकिन मुझे यकीन नहीं है कि यह क्या है। सही होने पर खुशी होगी!
संपादित करें: यह है [ [] for _ in range(10)]
उदाहरण :
>>> [ [random.random() for _ in range(2) ] for _ in range(5)]
>>> [[0.7528051908943816, 0.4325669600055032], [0.510983236521753, 0.7789949902294716], [0.09475179523690558, 0.30216475640534635], [0.3996890132468158, 0.6374322093017013], [0.3374204010027543, 0.4514925173253973]]