Как сравнить первый кортеж из одного списка кортежей с первым из другого списка, затем второй со вторым списком и т. Д.? - PullRequest
2 голосов
/ 04 июля 2019

Я пытаюсь сравнить два списка кортежей, составленных из целых чисел, и я не могу добиться успеха.list_a = [(1, 1), (2, 2), (3, 4), (4, 1)] list_b = [(1, 2), (2, 2), (3, 1), (4, 1)]

Я пытаюсь сравнить первый кортеж с первым кортежем из другого списка, затем второй со вторым, затем третий и т. Д.

Я пыталсячтобы просмотреть два списка и значения, как показано ниже.

for w, x in list_a: 
    for y, z in list_b:
        if x == z:
            total += 1
            break
        else:
            total -= 1
            break

В первом цикле переменные «w» и «x» из значения получат значения: (1, 1).Тогда «y» и «z» получат (1, 2) и сравнят.Все идет нормально.Моя проблема в том, что тогда "y" и "z" будут проходить через второй кортеж list_b, тогда как "w" и "x" останутся с первым кортежем list_a

Надеюсь, это понятно, яизвините, у меня хорошее знание английского, но иногда немного сложно объяснить подобные вещи.

1 Ответ

0 голосов
/ 04 июля 2019

Вы должны zip() их вместе, чтобы вы могли сравнить значения всего кортежа в одной итерации списка:

list_a = [(1, 1), (2, 2), (3, 4), (4, 1)] 
list_b = [(1, 2), (2, 2), (3, 1), (4, 1)]

total = 0
for (w, x), (y, z) in zip(list_a, list_b):
    # (w, x) are from list_a
    # (y, z) are from list_b
    if x == z:
        total += 1
    else:
        total -= 1
...