সর্বাধিক কর্মক্ষমতা দক্ষ পদ্ধতির approach
আপনি তালিকায় স্লাইস ইনডেক্সিং ব্যবহার করে উপাদানটি সন্নিবেশ করতে পারেন । উদাহরণ স্বরূপ:
>>> a = [1, 2, 4]
>>> insert_at = 2
>>> b = a[:]
>>> b[insert_at:insert_at] = [3]
>>> b
[1, 2, 3, 4]
প্রদত্ত সূচকে একসাথে একাধিক উপাদান সন্নিবেশ করার জন্য , আপনাকে যা করতে হবে তা হ'ল list
যেটি একাধিক উপাদান আপনি সন্নিবেশ করতে চান তা ব্যবহার করা। উদাহরণ স্বরূপ:
>>> a = [1, 2, 4]
>>> insert_at = 2
>>> insert_elements = [3, 5, 6]
>>> a[insert_at:insert_at] = insert_elements
>>> a
[1, 2, 3, 5, 6, 4]
বিকল্প তালিকা তালিকাগুলি ব্যবহার করে (তবে কার্য সম্পাদনের ক্ষেত্রে খুব ধীর) :
একটি বিকল্প হিসাবে, এটি ব্যবহার অর্জন করা যেতে পারে তালিকা ধী সঙ্গে enumerate
খুব। (তবে দয়া করে এটি এভাবে করবেন না It এটি কেবল উদাহরণের জন্য) :
>>> a = [1, 2, 4]
>>> insert_at = 2
>>> b = [y for i, x in enumerate(a) for y in ((3, x) if i == insert_at else (x, ))]
>>> b
[1, 2, 3, 4]
সমস্ত সমাধানের পারফরম্যান্স তুলনা
timeit
পাইথন ৩.৪.৫-এর জন্য 1000 টি উপাদানের তালিকার সাথে সমস্ত উত্তরের তুলনা এখানে :
কাটা সন্নিবেশ ব্যবহার করে আমার উত্তর - দ্রুততম (প্রতি লুপে 3.08% সেকেন্ড)
mquadri$ python3 -m timeit -s "a = list(range(1000))" "b = a[:]; b[500:500] = [3]"
100000 loops, best of 3: 3.08 µsec per loop
কাটা তালিকার একত্রিত হওয়ার উপর ভিত্তি করে ATOzTOA- এর গৃহীত উত্তর - দ্বিতীয় (প্রতি লুপে 6.71%)
mquadri$ python3 -m timeit -s "a = list(range(1000))" "b = a[:500] + [3] + a[500:]"
100000 loops, best of 3: 6.71 µsec per loop
রাশি পঞ্চালের উত্তর সর্বাধিক ভোটের সাহায্যেlist.insert(...)
- তৃতীয় (প্রতি লুপে 26.5 ইউএসসি)
python3 -m timeit -s "a = list(range(1000))" "b = a[:]; b.insert(500, 3)"
10000 loops, best of 3: 26.5 µsec per loop
তালিকা সংমিশ্রণের সাথে আমার উত্তর এবংenumerate
- চতুর্থ (প্রতি লুপে 168 µ সেক সহ খুব ধীর)
mquadri$ python3 -m timeit -s "a = list(range(1000))" "[y for i, x in enumerate(a) for y in ((3, x) if i == 500 else (x, )) ]"
10000 loops, best of 3: 168 µsec per loop
b = a[:].insert(2,3)
বেশ সংক্ষিপ্ত বলে মনে হচ্ছে, মূল তালিকাটি প্রভাবিত করে না এবং এটি বর্ণনামূলক।