Python'da iki sıralı listeyi nasıl karşılaştırabilirim?


107

Uzun bir listem varsa: myList = [0,2,1,0,2,1]iki listeye ayırdığım:

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

Bu iki listeyi, her ikisinin de eşit / özdeş olup olmadıklarını, aynı sırada olmaları gereken kısıtlamayla nasıl karşılaştırabilirim?

İki listeyi sıralayarak karşılaştırmak isteyen sorular gördüm, ancak benim özel durumumda, sıralı bir karşılaştırmayı değil, aynı liste karşılaştırmasını kontrol ediyorum.

Yanıtlar:


177

Sadece klasik ==operatörü kullanın :

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

Aynı dizindeki elemanlar eşitse listeler eşittir. Daha sonra sipariş dikkate alınır.


3
Bu, uyuşuk bir listeyle aşağıdaki hatayı döndürebilir:ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Alex Reynolds

@AlexReynolds ne dedi. Sen ile teste gerek all(arr1 == arr2)ya (arr1 == arr2).all().
Julio

@Alex Bu bir dizi, liste değil. Her ikisi de sıralı veri türleridir, ancak kavramsal olarak farklıdır. Bir diziye uyguladığınız bir eylem dizinin tüm öğelerine uygulanır, ancak aynı şey listeler için geçerli değildir.
wjandrea

11

Sadece aynı olup olmadıklarını kontrol etmek istiyorsanız, a == bdikkate alınan sipariş ile size doğru / yanlış vermelisiniz.

Öğeleri karşılaştırmak istemeniz durumunda, karşılaştırma için numpy kullanabilirsiniz

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

Burada c, tümü doğru olan 3 öğeli bir dizi içerecektir (örneğiniz için). A ve b öğelerinin eşleşmemesi durumunda, c'deki karşılık gelen öğeler yanlış olacaktır.


Ve sonra c.all () 'ın Doğru olup olmadığını kontrol edin
Pulkit Bansal

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.