Bagaimana saya bisa membandingkan dua daftar yang dipesan dengan python?

105

Jika saya memiliki satu daftar panjang: myList = [0,2,1,0,2,1]yang saya bagi menjadi dua daftar:

a = [0,2,1]
b = [0,2,1]

bagaimana cara membandingkan kedua daftar ini untuk melihat apakah keduanya sama / identik, dengan batasan bahwa keduanya harus dalam urutan yang sama?

Saya telah melihat pertanyaan yang meminta untuk membandingkan dua daftar dengan mengurutkannya, tetapi dalam kasus khusus saya, saya tidak memeriksa perbandingan yang diurutkan, tetapi perbandingan daftar yang identik.

Jeremy
sumber

Jawaban:

175

Cukup gunakan ==operator klasik :

>>> [0,1,2] == [0,1,2]
True
>>> [0,1,2] == [0,2,1]
False
>>> [0,1] == [0,1,2]
False

Daftar sama jika elemen pada indeks yang sama sama. Pemesanan diperhitungkan kemudian.

Maxime Lorant
sumber
3
Ini dapat mengembalikan kesalahan berikut dengan daftar numpy:ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Alex Reynolds
Apa yang dikatakan @AlexReynolds. Anda harus menguji dengan all(arr1 == arr2)atau (arr1 == arr2).all().
Julio
10

Jika Anda ingin memeriksa apakah mereka identik atau tidak, a == bharus memberi Anda benar / salah dengan urutan yang diperhitungkan.

Jika Anda ingin membandingkan elemen, Anda dapat menggunakan numpy untuk perbandingan

c = (numpy.array(a) == numpy.array(b))

Di sini, c akan berisi array dengan 3 elemen yang semuanya benar (untuk contoh Anda). Jika elemen a dan b tidak cocok, elemen terkait di c akan bernilai salah.

Vasanth
sumber
Dan kemudian periksa apakah c.all () Benar
Pulkit Bansal
2

Ekspresi a == bharus melakukan pekerjaan itu.

Abhiram
sumber