Как я могу сравнить два упорядоченных списка в 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
3

Выражение a == bдолжно работать.

Абхирам
источник