Как я могу сравнить два упорядоченных списка в Python?


107

Если у меня есть один длинный список: myList = [0,2,1,0,2,1]я разделил его на два списка:

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

как я могу сравнить эти два списка, чтобы увидеть, равны ли они / идентичны, с ограничением, что они должны быть в одном порядке?

Я видел вопросы с просьбой сравнить два списка путем их сортировки, но в моем конкретном случае я проверяю не отсортированное сравнение, а сравнение идентичных списков.

Ответы:


177

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

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

Списки равны, если равны элементы с одним индексом. При этом учитывается заказ.


3
Это может вернуть следующую ошибку со списком numpy:ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Alex Reynolds

Что сказал @AlexReynolds. Вы должны проверить с помощью all(arr1 == arr2)или (arr1 == arr2).all().
Хулио,

@Alex Это массив, а не список. Это оба упорядоченных типа данных, но концептуально разные. Действие, которое вы применяете к массиву, применяется ко всем его элементам, но это не относится к спискам.
wjandrea

11

Если вы хотите просто проверить, идентичны они или нет, a == b вы должны указать true / false с учетом порядка.

Если вы хотите сравнить элементы, вы можете использовать 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.