अधिकांश प्रदर्शन कुशल दृष्टिकोण
आप सूची में स्लाइस इंडेक्सिंग का उपयोग करके तत्व भी डाल सकते हैं । उदाहरण के लिए:
>>> a = [1, 2, 4]
>>> insert_at = 2 # Index at which you want to insert item
>>> b = a[:] # Created copy of list "a" as "b".
# Skip this step if you are ok with modifying the original list
>>> b[insert_at:insert_at] = [3] # Insert "3" within "b"
>>> b
[1, 2, 3, 4]
दिए गए इंडेक्स में कई तत्वों को एक साथ सम्मिलित करने के लिए , आपको केवल उन list
कई तत्वों का उपयोग करना है, जिन्हें आप सम्मिलित करना चाहते हैं। उदाहरण के लिए:
>>> a = [1, 2, 4]
>>> insert_at = 2 # Index starting from which multiple elements will be inserted
# List of elements that you want to insert together at "index_at" (above) position
>>> insert_elements = [3, 5, 6]
>>> a[insert_at:insert_at] = insert_elements
>>> a # [3, 5, 6] are inserted together in `a` starting at index "2"
[1, 2, 3, 5, 6, 4]
सूची समझ का उपयोग करके वैकल्पिक (लेकिन प्रदर्शन के मामले में बहुत धीमी गति से) :
एक विकल्प के रूप में, यह भी के साथ सूची समझ का उपयोग कर प्राप्त किया जा सकता enumerate
है। (लेकिन कृपया इसे इस तरह न करें। यह सिर्फ दृष्टांत के लिए है) :
>>> 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
पायथन 3.4.5 के लिए 1000 तत्वों की सूची के साथ सभी उत्तरों की तुलना की गई है:
कटा हुआ सम्मिलन का उपयोग करके मेरा जवाब - सबसे तेज़ (3.08 loopsec प्रति लूप)
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 usec प्रति लूप)
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 loopsec प्रति लूप के साथ बहुत धीमा)
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)
बहुत कम लगता है, मूल सूची को प्रभावित नहीं करता है और बहुत वर्णनात्मक है।