Як я можу порівняти два упорядковані списки в python?


105

Якщо у мене є один довгий список: myList = [0,2,1,0,2,1]я розділився на два списки:

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

як я можу порівняти ці два списки, щоб побачити, чи обидва вони рівні / однакові, з тим обмеженням, що вони повинні бути в одному порядку?

Я бачив запитання з проханням порівняти два списки шляхом їх сортування, але в моєму конкретному випадку я перевіряю не сортоване порівняння, а однакове порівняння списків.

Відповіді:


175

Просто використовуйте класичний ==оператор:

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

Списки рівні, якщо елементи в одному індексі рівні. Порядок враховується тоді.


3
Це може повернути таку помилку зі списком:ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Алекс Рейнольдс

Що сказав @AlexReynolds Ви повинні пройти тестування з all(arr1 == arr2)або (arr1 == arr2).all().
Хуліо

10

Якщо ви хочете просто перевірити, чи вони однакові чи ні, a == bслід надати вам справжнє / хибне, щоб замовлення було враховано.

Якщо ви хочете порівняти елементи, ви можете використовувати numpy для порівняння

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

Тут c буде містити масив з 3-ма елементами, всі з яких є істинними (для вашого прикладу). Якщо елементи подій a і b не збігаються, то відповідні елементи в c будуть помилковими.


А потім перевірте, чи справді c.all () правда
Pulkit Bansal

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.