Python membandingkan dua elemen daftar string bijaksana

Dalam bahasa pemrograman Python, daftar didefinisikan sebagai wadah yang dipesan dan dapat dimodifikasi. Daftar dapat digunakan untuk menyimpan objek yang sifatnya serupa. Saat menulis dengan Python, perbandingan sering digunakan untuk memeriksa berbagai kondisi. Untuk pemeriksaan kondisi tunggal, kita mungkin perlu membandingkan dua variabel atau dua set variabel. Di blog ini, kita akan melihat berbagai metode untuk membandingkan dua daftar dengan Python. Saat membandingkan, kita harus menentukan apakah kedua daftar menyertakan komponen yang sama atau tidak, terlepas dari urutan kemunculan elemen dalam daftar

Ruang Lingkup Pasal

  • Pada artikel ini, kami akan mempelajari seluk-beluk perbandingan daftar python dengan memandu Anda langkah demi langkah melalui dasar-dasar konsep perantara
  • Kita akan mulai dengan peran daftar Python dan memperluasnya ke berbagai cara agar kita dapat membandingkan dua daftar dengan Python
  • Kita akan melalui operator ==, menyortir di samping operator ==, untuk loop, menggunakan fungsi zip() dan menggunakan koleksi. Counter() function, menggunakan fungsi reduce() bersamaan dengan map() dan function difference();

pengantar

Sebelum kita mulai, kami akan menganggap bahwa Anda telah berhasil menginstal Python di sistem Anda dan terbiasa dengan Dasar-Dasar Python

Mari kita mundur selangkah dan melihat Struktur Data Daftar, yang diperlukan untuk memahami perbandingan daftar python. Jika Anda sudah mengetahuinya, lanjutkan ke bagian "Bagaimana cara membandingkan dua daftar dengan Python?"

Apa Itu Daftar Python Sebenarnya?

Ada beberapa struktur data di Python, tetapi Daftar adalah salah satu yang paling mendasar dan signifikan. Seiring dengan urutan linier, Daftar bertindak mirip dengan larik dinamis dan memiliki beberapa metode bawaan untuk melakukan berbagai tindakan pada data yang disimpan di dalamnya. Pengindeksan Daftar dimulai dari nol dan berlanjut hingga (panjang Daftar - 1). Daftar mendukung beberapa operasi seperti menambahkan, mengalikan, mengiris, keanggotaan, dan membandingkan. Daftar digunakan dalam Python untuk menampung serangkaian tipe data yang berbeda. Daftar Python dapat berubah, yang berarti mereka dapat mengubah itemnya setelah dibuat. Daftar adalah salah satu dari empat struktur data Python untuk menyimpan kumpulan data;

Daftar dengan Python, seperti yang Anda ketahui, dapat berubah dan dapat menyimpan jumlah entri yang terbatas. Berdasarkan kriteria luas, kami tidak dapat menentukan apakah sebuah daftar lebih atau kurang dari daftar lainnya. Ketika kami berbicara tentang membandingkan daftar, kami menyiratkan menentukan apakah dua daftar berisi entri yang sama atau tidak

Bagaimana Membandingkan Dua Daftar dengan Python?

Salah satu operasi paling mendasar dalam setiap bahasa pemrograman adalah perbandingan. Namun, bahkan tindakan yang tampaknya mendasar pun dapat memicu banyak perdebatan yang menarik

Dalam kebanyakan kasus, selama proses pengembangan, kita perlu membandingkan elemen data dalam sebuah daftar. Perbandingan adalah pendekatan untuk membandingkan elemen data dari satu daftar dengan elemen data dari daftar lainnya

Ternyata membandingkan dua daftar dengan Python cukup membuat stres, tetapi jangan khawatir, saya siap membantu Anda. Di blog ini, kami akan mengeksplorasi berbagai pendekatan untuk membandingkan dua daftar

Metode 1. Perbandingan Sederhana

Operator l1 == l2 untuk perbandingan elemen-bijaksana adalah pendekatan yang paling Pythonic untuk memverifikasi jika dua daftar yang dipesan l1 dan l2 identik. Hasil pengembaliannya adalah True jika semua entri sama dan panjang daftarnya sama. Pendekatan perbandingan ini bekerja dengan baik untuk skenario sederhana, tetapi tidak bekerja untuk perbandingan yang canggih, seperti yang akan kita lihat nanti

Daftar objek integer atau string adalah contoh kasus dasar

Kode

numbers = [1, 2, 3]
target = [1, 2, 3]
print(numbers == target)

Keluaran

Cukup mudah, ya?

Pengecualian. Sayangnya, dunia, seperti kode kualitas produksi, rumit. Segalanya menjadi sulit dengan cepat di dunia nyata. Pertimbangkan skenario berikut sebagai contoh

Asumsikan Anda memiliki daftar floating point yang dibuat secara dinamis. Anda dapat menggabungkan elemen tunggal atau bilangan floating point yang diperoleh dari operasi matematika seperti 0. 1 + 0. 2 + 0. 1

Kode

numbers = []
numbers.append(0.1 + 0.2 +0.1)
numbers.append(0.2) 
target = [0.4, 0.2]
print(numbers == target)
print(numbers)
print(target)
_

Keluaran

False
[0.40000000000000004, 0.2]
[0.4, 0.2]

Jelas, matematika floating point memiliki batas, dan ada kalanya kita ingin membandingkan dua daftar sambil mengabaikan masalah presisi atau bahkan menentukan ambang batas. Operator == tidak akan cukup dalam skenario ini

Menggunakan == bukanlah jawaban dalam setiap keadaan; . Operator kesetaraan == membandingkan elemen daftar dengan elemen

Metode 2. Penyortiran Pertama dan Kemudian Menggunakan == Operator

Di Python, Anda bisa mengurutkan daftar dalam dua metode. Yang pertama adalah menggunakan daftar. sort() , dan lainnya kita dapat menggunakan fungsi sortir()

Pendekatan pertama mengurutkan daftar pada tempatnya, yang menyiratkan bahwa daftar Anda akan diubah. Yang terbaik adalah tidak mengubah daftar yang sudah ada karena ini mungkin membawa kekurangan yang sulit ditemukan

Metode sortir() lebih disukai karena mengembalikan daftar baru sambil membiarkan yang asli tidak berubah

Dengan bantuan sebuah contoh, mari kita lihat cara kerjanya

Kode

numbers = [10, 30, 20]
target = [10, 20, 30]
print(numbers == target)
print(sorted(numbers) == sorted(target))
print(sorted(numbers))
print(sorted(target))

Keluaran

False
True
[10, 20, 30]
[10, 20, 30]
_

Akibatnya, dengan mengurutkan daftar terlebih dahulu, kami memastikan bahwa mereka memiliki urutan yang sama dan dengan demikian dapat dibandingkan menggunakan operator ==

Metode 3. Menggunakan untuk Loop

Pendekatan berikut mungkin digunakan oleh pengembang yang masuk dari bahasa pemrograman lain atau oleh pemula yang tidak terbiasa dengan operator persamaan pada daftar

Kode

def method_3(l1, l2):
   for i in range(min(len(l1), len(l2))):
       if l1[i] != l2[i]:
           return False
   return len(l1) == len(l2)
numbers = [10, 20, 20]
target = [10, 20, 30]
print(method_3(numbers, target))

Keluaran

Anda mengulang semua indeks dari 0 hingga (panjang daftar terkecil - 1) , seperti yang didefinisikan oleh komponen min(len(l1), len(l2). Kemudian Anda memeriksa apakah kedua komponen di tempat yang sama berbeda. Jika mereka berbeda, i. e. , l1[i]. = l2[i], Anda dapat langsung mengembalikan False karena daftarnya bervariasi

Daftar komponen sebanding jika Anda menjalankan seluruh loop tanpa mengembalikan False. Namun, satu daftar mungkin lebih panjang. Jadi, dengan mengembalikan len(l1) == len(l2), Anda menjamin bahwa Anda hanya mengembalikan True jika semua entri identik dan daftar memiliki panjang yang sama. Satu ton kode untuk melakukan sesuatu dengan sangat mudah. Mari kita lihat pendekatan yang lebih baik dengan memanfaatkan metode zip() untuk meminimalkan kerumitan kode

Metode 4. Menggunakan Fungsi zip() Bersamaan dengan for Loop

Fungsi zip menerima daftar iterables dan menggabungkan nilai ke-i mereka menjadi tuple untuk setiap i

Mari kita lihat bagaimana kita dapat memanfaatkan metode zip() untuk membuat kode sebelumnya menjadi lebih pendek

Kode

def method_4(l1, l2):
   for x, y in zip(l1, l2):
       if x != y:
           return False
   return len(l1) == len(l2)
numbers = [1, 2, 3, 4, 5]
target = [1, 2, 3]
print(method_4(numbers, target))
_

Keluaran

Anda sekarang mengulangi pasangan item daripada indeks (yang di-zip bersama). Jika daftar memiliki panjang yang bervariasi, entri yang tersisa dari daftar yang lebih panjang akan dilewati. Ini menyederhanakan perbandingan berdasarkan elemen dan menghilangkan kebutuhan akan teknik pengindeksan yang rumit

Metode 5. cmp() Fungsi

Catatan. Fungsi cmp() tidak didukung di Python 3. x

Fungsi cmp() adalah mekanisme bawaan Python untuk membandingkan item dari dua daftar. Fungsi juga dapat membandingkan dua item dan mengembalikan hasil berdasarkan masukan yang diberikan. Nilai pengembalian ini bisa menjadi salah satu dari tiga hal. 1, 0 atau -1

Misalnya, jika l1 dan l2 adalah dua daftar, maka nilai 1 dikembalikan jika l1 (daftar 1) lebih besar dari l2 (atau daftar2). Jika l1 lebih kecil dari l2, nilai -1 dikembalikan; . Sekarang mari kita lihat sebuah contoh. Kode

list1 = [ 1, 2, 4, 3]
list2 = [ 1, 2, 5, 8]
list3 = [ 1, 2, 5, 8, 10]
list4 = [ 1, 2, 4, 3]
  
# Comparing lists 
print "Comparison of list2 with list1 : ",
print cmp(list2, list1)
print "Comparison of list2 with list3(larger size) : ",
print cmp(list2, list3)
print "Comparison of list4 with list1(equal) : ",
print cmp(list4, list1)

Keluaran

Comparison of list2 with list1 :  1
Comparison of list2 with list3(larger size) :  -1
Comparison of list4 with list1(equal) :  0
_

Metode 6. Menggunakan Fungsi peta() Bersama Dengan Fungsi pengurangan()

Metode map() mengambil sebagai input fungsi dan objek iterable Python (daftar, tupel, string, dll. ) dan menghasilkan objek peta. Fungsi berlaku untuk setiap elemen daftar dan mengembalikan sebuah iterator sebagai hasilnya

Sintaksis

map(funtion, iterable_object)
_

Selain itu, python memiliki metode bernama reduce() yang memungkinkan kita untuk menyingkat daftar. Metode pengurangan () secara rekursif menerapkan fungsi yang ditentukan ke objek yang dapat diubah. Untuk menggunakan metode reduce(), pertama-tama kita harus mengimpor modul functool

Sintaksis

numbers = []
numbers.append(0.1 + 0.2 +0.1)
numbers.append(0.2) 
target = [0.4, 0.2]
print(numbers == target)
print(numbers)
print(target)
_0

Untuk membandingkan dua daftar, kita dapat menggunakan kedua pendekatan tersebut secara bersamaan. Metode map() akan menerapkan fungsi ke setiap objek iterable, dan fungsi reduce() akan menanganinya secara rekursif. Perhatikan contoh berikut

Catatan. Sebelum menggunakan metode ini, Anda harus mengurutkan daftar

Kode

numbers = []
numbers.append(0.1 + 0.2 +0.1)
numbers.append(0.2) 
target = [0.4, 0.2]
print(numbers == target)
print(numbers)
print(target)
_1

Keluaran

Catatan. Fungsi lambda adalah fungsi anonim kecil. Fungsi lambda dapat memiliki jumlah parameter yang tidak terbatas tetapi hanya satu ekspresi

Sintaksis

numbers = []
numbers.append(0.1 + 0.2 +0.1)
numbers.append(0.2) 
target = [0.4, 0.2]
print(numbers == target)
print(numbers)
print(target)
_2

Fungsi map() dalam contoh di atas menggabungkan semua pasangan item ke nilai Boolean; . Metode pengurangan () melakukan operasi dan pada semua nilai Boolean

Metode 7. Menggunakan koleksi. Menangkal()

Sintaksis

numbers = []
numbers.append(0.1 + 0.2 +0.1)
numbers.append(0.2) 
target = [0.4, 0.2]
print(numbers == target)
print(numbers)
print(target)
_3

Untuk membandingkan daftar secara efektif, gunakan koleksi. fungsi penghitung(). Kelas Python Counter disertakan dalam modul Collections. Ini adalah subkelas Kamus. Itu melacak item sebagai kunci kamus dan menghitungnya sebagai nilai kamus. Dengan menggunakan ini, kita dapat menghitung frekuensi setiap elemen dalam daftar dan menggunakan operator == untuk menentukan apakah dua daftar itu identik

Catatan. Pengurutan daftar tidak berpengaruh pada fungsi counter()

Sekarang mari kita lihat sebuah contoh. Kode

numbers = []
numbers.append(0.1 + 0.2 +0.1)
numbers.append(0.2) 
target = [0.4, 0.2]
print(numbers == target)
print(numbers)
print(target)
_4

Keluaran

numbers = []
numbers.append(0.1 + 0.2 +0.1)
numbers.append(0.2) 
target = [0.4, 0.2]
print(numbers == target)
print(numbers)
print(target)
_5

Metode 8. Menggunakan fungsi perbedaan()

Sintaksis

Kami juga menggunakan metode difference() untuk membandingkan daftar. Fungsi difference() memberikan perbedaan antara dua set sebagai satu set. Set yang dikembalikan mencakup hal-hal yang hanya ada di set pertama dan tidak di keduanya

Untuk memanfaatkan fungsi difference() , pertama-tama kita harus mengubah daftar kita menjadi set

Jadi, Apa Sebenarnya 'Set' itu?

Set adalah salah satu dari empat tipe data bawaan Python untuk menyimpan kumpulan data. Himpunan adalah koleksi yang tidak terurut, tidak berubah, dan tidak terindeks. Di Python, metode set() mengambil input dan mengubahnya menjadi objek set. Itu menerima parameter seperti daftar, tupel, dan kamus. Karena barang-barang yang disediakan sebagai daftar tidak berurutan, keluaran elemen mungkin tidak sesuai urutan. Dua elemen dengan nilai yang sama tidak dapat ada dalam satu set

Perhatikan contoh berikut

Kode

numbers = []
numbers.append(0.1 + 0.2 +0.1)
numbers.append(0.2) 
target = [0.4, 0.2]
print(numbers == target)
print(numbers)
print(target)
_6

Keluaran

numbers = []
numbers.append(0.1 + 0.2 +0.1)
numbers.append(0.2) 
target = [0.4, 0.2]
print(numbers == target)
print(numbers)
print(target)
_7

Dalam contoh di atas, pertama-tama kita menggunakan fungsi set() untuk mengubah daftar menjadi satu set, kemudian kita menggunakan fungsi difference() untuk membedakan antara kedua set ini, dan terakhir kita menggunakan kondisi if() untuk memeriksa nilai yang dikembalikan

Ini membawa kita ke akhir blog. Anda tampaknya telah menguasai beberapa teknik perbandingan daftar Python. Strategi optimal ditentukan pada jenis bidak yang kita miliki dan bagaimana kita ingin membandingkannya

Bagaimana Anda membandingkan dua daftar dalam elemen Python

Metode 1. Perbandingan Sederhana . Hasil pengembaliannya adalah True jika semua entri sama dan panjang daftarnya sama. The l1 == l2 operator for element-wise comparison is the most Pythonic approach to verify if two ordered lists l1 and l2 are identical. The return result is True if all entries are equal and the lengths of the lists are the same.

Bagaimana Anda membandingkan dua daftar yang berisi string dengan Python?

Python sort() metode dan == operator untuk membandingkan daftar . Metode python sort() digunakan untuk mengurutkan daftar input dengan tujuan jika kedua daftar input sama, maka elemen akan berada pada posisi indeks yang sama. combine Python's sort() method with the == operator to compare two lists. Python sort() method is used to sort the input lists with a purpose that if the two input lists are equal, then the elements would reside at the same index positions.

Bagaimana Anda membandingkan dua elemen daftar dengan bijaksana?

Metode untuk membandingkan dua daftar diberikan di bawah ini. .
Fungsi cmp()
Fungsi set() dan operator ==
Fungsi sort() dan operator ==
Koleksi. fungsi penghitung()
Fungsi reduce() dan map()

Bagaimana cara membandingkan dua daftar string dengan Python dan mengembalikan yang tidak cocok?

Membandingkan string menggunakan == dan. = . == dan. = adalah operator boolean, artinya mereka mengembalikan Benar atau Salah. Misalnya, == mengembalikan True jika kedua string cocok, dan False jika sebaliknya.