← Все вопросы

Как сравнить два списка поэлементно и найти, где они различаются?

Задан 3 месяца назад377 просмотров2 ответа
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]

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект