Performans açısından en verimli yaklaşım
Listedeki dilim indekslemesini kullanarak da öğeyi ekleyebilirsiniz . Örneğin:
>>> a = [1, 2, 4]
>>> insert_at = 2
>>> b = a[:]
>>> b[insert_at:insert_at] = [3]
>>> b
[1, 2, 3, 4]
Belirli bir dizinde birden çok öğeyi birlikte eklemek için tek yapmanız gereken list
, eklemek istediğiniz birden çok öğe kullanmaktır . Örneğin:
>>> 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]
Liste anlamayı kullanarak alternatif (ancak performans açısından çok yavaş) :
Alternatif olarak, liste anlama ile enumerate
de elde edilebilir . (Ama lütfen bunu bu şekilde yapmayın. Bu sadece örnekleme içindir) :
>>> 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]
Tüm çözümlerin performans karşılaştırması
İşte timeit
Python 3.4.5 1000 unsurların listesi ile tüm cevapların karşılaştırması:
Dilimlenmiş ekleme kullanarak mayın cevabı - En hızlı (döngü başına 3,08 µsn)
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'nın dilimlenmiş listelerin birleştirilmesine dayanan kabul edilen cevabı - İkinci (döngü başına 6.71 µsn)
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
Rushy Panchal'ın en çok oy kullanan cevabılist.insert(...)
- Üçüncü (döngü başına 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
Benim cevabım ile Listesi Anlama veenumerate
Dördüncü - (çok yavaş döngü başına 168 mikro-saniyeye ile)
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)
oldukça kısa görünüyor, orijinal listeyi etkilemiyor ve oldukça açıklayıcı.