← Все вопросы
Как сравнить два списка поэлементно и найти, где они различаются?
10
Есть два списка одинаковой длины, хочу пройтись по ним парами и вывести позиции, где элементы не совпадают. Как это аккуратно сделать?
2 ответа
16
✓ Принятый ответ — помог автору
Через zip и enumerate сразу обе пары и индекс:
a = [1, 2, 3, 4]
b = [1, 9, 3, 0]
for i, (x, y) in enumerate(zip(a, b)):
if x != y:
print(f"позиция {i}: {x} != {y}")
zip(a, b) отдаёт пары (x, y), enumerate добавляет индекс. Если просто нужен факт «равны ли списки целиком» — хватит a == b, цикл не нужен. Учти: zip обрезается по короткому списку, так что для разной длины он молча пропустит хвост.
6
Список позиций различий в одну строку:
diff = [i for i, (x, y) in enumerate(zip(a, b)) if x != y]
Ваш ответ
Войдите, чтобы ответить на вопрос.