পাইথনে (2 এবং 3)। যখনই আমরা তালিকাটি স্লাইসিং ব্যবহার করি তবে এটি একটি নতুন অবজেক্ট প্রদান করে, যেমন:
l1 = [1,2,3,4]
print(id(l1))
l2 = l1[:]
print(id(l2))
আউটপুট
>>> 140344378384464
>>> 140344378387272
যদি একই জিনিসকে টিপল দিয়ে পুনরাবৃত্তি করা হয়, একই জিনিসটি ফিরে আসে, যেমন:
t1 = (1,2,3,4)
t2 = t1[:]
print(id(t1))
print(id(t2))
আউটপুট
>>> 140344379214896
>>> 140344379214896
এটি কেন ঘটছে সে সম্পর্কে কেউ যদি কিছুটা আলোকপাত করতে পারে তবে দুর্দান্ত হবে, আমার পাইথনের পুরো অভিজ্ঞতা জুড়ে আমি ছাপের মধ্যে ছিলাম খালি টুকরো নতুন কোনও বস্তু ফেরায়।
আমার বোধগম্যতা হ'ল এটি একই পদার্থটি ফিরিয়ে দিচ্ছে যেমন টিউপসগুলি স্থাবর হয় এবং এটির একটি নতুন অনুলিপি তৈরি করার কোনও মানে নেই। কিন্তু আবার, নথিতে এটি কোথাও উল্লেখ করা হয়নি।
l2 = tuple(iter(l1))
অপ্টিমাইজেশনকে বাইপাস করে
PyTuple_GetSlice
আপনার প্রশ্নের দেখার পর ভুলভাবে নথিভুক্ত করা হয়। দস্তাবেজগুলি এখন ঠিক করা হয়েছে (এটি ছিল বিপিও ইস্যু 38557 )।