Saya memiliki dua daftar yang perlu saya gabungkan di mana daftar kedua memiliki duplikat dari daftar pertama yang diabaikan. .. Agak sulit untuk menjelaskan, jadi izinkan saya menunjukkan contoh seperti apa kode itu, dan apa yang saya inginkan sebagai hasilnya.
first_list = [1, 2, 2, 5]
second_list = [2, 5, 7, 9]
# The result of combining the two lists should result in this list:
resulting_list = [1, 2, 2, 5, 7, 9]
Anda akan melihat bahwa hasil memiliki daftar pertama, termasuk dua nilai "2", tetapi fakta bahwa second_list juga memiliki nilai 2 dan 5 tambahan tidak ditambahkan ke daftar pertama.
Biasanya untuk sesuatu seperti ini saya akan menggunakan set, tetapi satu set pada first_list akan membersihkan nilai duplikat yang sudah dimilikinya. Jadi saya hanya ingin tahu cara terbaik / tercepat untuk mencapai kombinasi yang diinginkan ini.
Terima kasih.
second_list
?Jawaban:
Anda perlu menambahkan ke daftar pertama elemen-elemen dari daftar kedua yang tidak ada di daftar pertama - set adalah cara termudah untuk menentukan elemennya, seperti ini:
Atau jika Anda lebih suka satu baris 8-)
sumber
2
hasil Anda, padahal seharusnya ada dua.sumber
set
. 👍Anda dapat menggunakan set:
sumber
Anda dapat menurunkannya menjadi satu baris kode jika Anda menggunakan numpy:
sumber
sumber
sumber
Yang paling sederhana bagi saya adalah:
sumber
TypeError: unhashable type: 'dict'
)Anda juga dapat menggabungkan respons RichieHindle dan Ned Batchelder untuk algoritme rata-rata kasus O (m + n) yang mempertahankan keteraturan:
Perhatikan bahwa
x in s
kasus terburuk memiliki kompleksitas O (m) , jadi kompleksitas kasus terburuk kode ini tetap O (m * n) .sumber
Ini mungkin bisa membantu
Fungsi gabungan menggabungkan daftar kedua menjadi pertama, tanpa menduplikasi elemen a, jika sudah ada di a. Mirip dengan set union operator. Fungsi ini tidak berubah b. Jika a = [1,2,3] b = [2,3,4]. Setelah penyatuan (a, b) membuat a = [1,2,3,4] dan b = [2,3,4]
sumber
Berdasarkan resepnya :
sumber
[1, 2, 2, 5, 7, 9]
sumber