Aku punya ini:
>>> a = [1, 2, 4]
>>> print a
[1, 2, 4]
>>> print a.insert(2, 3)
None
>>> print a
[1, 2, 3, 4]
>>> b = a.insert(3, 6)
>>> print b
None
>>> print a
[1, 2, 3, 6, 4]
Apakah ada cara agar saya bisa mendapatkan daftar yang diperbarui sebagai hasilnya, daripada memperbarui daftar asli?
python
python-2.7
list
insert
ATOzTOA
sumber
sumber
b = a[:].insert(2,3)
tampaknya cukup pendek, tidak memengaruhi daftar asli dan cukup deskriptif.>>> a = [1, 2, 3, 4] >>> b = a[:].insert(2, 5) >>> print b None
Jawaban:
l.insert(index, obj)
sebenarnya tidak mengembalikan apa pun. Itu hanya memperbarui daftar.Seperti yang dikatakan ATO, Anda bisa melakukannya
b = a[:index] + [obj] + a[index:]
. Namun, cara lain adalah:sumber
Pendekatan paling efisien kinerja
Anda juga dapat memasukkan elemen menggunakan indeks irisan dalam daftar. Sebagai contoh:
Untuk menyisipkan beberapa elemen bersama pada indeks tertentu , yang perlu Anda lakukan adalah menggunakan salah satu
list
dari beberapa elemen yang ingin Anda sisipkan. Sebagai contoh:Alternatif menggunakan pemahaman daftar (tetapi sangat lambat dalam hal kinerja) :
Sebagai alternatif, dapat dicapai dengan menggunakan daftar pemahaman dengan
enumerate
juga. (Tapi tolong jangan lakukan seperti ini. Ini hanya untuk ilustrasi) :Perbandingan kinerja semua solusi
Berikut
timeit
perbandingan semua jawaban dengan daftar 1000 elemen untuk Python 3.4.5:Jawaban saya menggunakan irisan sisipan - Tercepat (3,08 µsec per loop)
Jawaban yang diterima ATOzTOA berdasarkan penggabungan daftar yang diiris - Detik (6,71 µsec per loop)
Jawaban Rushy Panchal dengan suara terbanyak menggunakan
list.insert(...)
- Ketiga (26.5 usec per loop)Jawaban saya dengan Pemahaman Daftar dan
enumerate
- Keempat (sangat lambat dengan 168 µsec per loop)sumber
3, 3.5
ke dalam daftar itu (secara berurutan) ->a[2:2] = [3,3.5]
. Sangat rapilist.insert
dan tugas potong), dan pada Python 3.8 perbedaan ini telah hilang sepenuhnya. Cara paling jelas untuk memasukkan elemen adalah dengan menggunakanlist.insert
, tentu saja.Yang terpendek yang saya dapatkan:
b = a[:2] + [3] + a[2:]
sumber
Pendekatan terbersih adalah menyalin daftar dan kemudian memasukkan objek ke dalam salinan. Di Python 3, ini dapat dilakukan melalui
list.copy
:Pada Python 2 menyalin daftar dapat dilakukan melalui
new = old[:]
(ini juga bekerja pada Python 3).Dalam hal kinerja, tidak ada perbedaan dengan metode lain yang diusulkan:
sumber
Gunakan metode insert () daftar Python . Pemakaian:
Contoh:
Kembali
[1, 2, 3, 4, 5]
sumber
Is there anyway I can get the updated list as result, instead of updating the original list in place?
Jawaban Anda sebaliknya.