varunl বর্তমানে গৃহীত উত্তর
>>> l = [None] * 10
>>> l
[None, None, None, None, None, None, None, None, None, None]
সংখ্যার মতো অ-রেফারেন্স ধরণের জন্য ভাল কাজ করে। দুর্ভাগ্যক্রমে আপনি যদি তালিকার একটি তালিকা তৈরি করতে চান তবে আপনি রেফারিং ত্রুটিতে চলে যাবেন। পাইথন ২.7. in এর উদাহরণ:
>>> 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]]