Bagaimana saya bisa mendapatkan rangkaian dari dua list di Python tanpa memodifikasi salah satu?
Di Python, satu-satunya cara yang saya bisa menemukan untuk menggabungkan dua daftar daftar.memperpanjang
, yang memodifikasi daftar pertama. Apakah ada rangkaian fungsi yang mengembalikan hasilnya tanpa memodifikasi argumen?
633
7
Ya:
list1+list2
. Hal ini memberikan sebuah daftar baru yang merupakan rangkaian darilist1
danlist2
.Tergantung pada bagaimana anda're akan menggunakannya setelah itu's dibuat
itertools.rantai
mungkin menjadi taruhan terbaik anda:Hal ini menciptakan sebuah generator untuk item dalam daftar gabungan, yang memiliki keuntungan bahwa tidak ada yang baru daftar kebutuhan yang akan dibuat, tetapi anda masih dapat menggunakan
c
seolah-olah itu adalah gabungan dari dua daftar:Jika daftar anda adalah besar dan efisiensi adalah perhatian saat ini dan metode lain dari
itertools
modul yang sangat berguna untuk mengetahui.Perhatikan bahwa contoh ini menggunakan item di
c
, sehingga anda'd perlu reinitialise itu sebelum anda dapat menggunakannya kembali. Tentu saja anda hanya dapat menggunakandaftar(c)
untuk membuat daftar lengkap, tapi itu akan membuat daftar baru di memori.concatenated_list = list_1 + list_2
Anda juga dapat menggunakan
jumlah
, jika anda memberikanstart
argumen:Karya ini secara umum untuk apa pun yang memiliki
+
operator:Dengan pengecualian dari string:
anda selalu bisa membuat daftar baru yang merupakan hasil dari menambahkan dua daftar.
Daftar urutan bisa berubah jadi saya kira itu masuk akal untuk memodifikasi asli daftar dengan memperpanjang atau append.
Dan jika anda memiliki lebih dari dua daftar untuk menggabungkan:
Itu doesn't benar-benar menghemat waktu (intermediate daftar masih dibuat) tapi lebih baik jika anda memiliki variabel jumlah daftar untuk meratakan, misalnya,
*args
.Hanya untuk membiarkan anda tahu:
Ketika anda menulis
list1 + list2
, anda menelepon__add__
metodelist1
, yang mengembalikan daftar baru. dengan cara ini anda juga dapat bergerak denganmyobject + list1
dengan menambahkan__add__
metode untuk anda pribadi kelas.