Причина, по которой вы видите распечатку дважды, состоит в том, что list.index
возвращает индекс первого появления значения в списке, а не «текущего». Поэтому, когда ваш второй список имеет индекс 4, а первый - индекс 2, b.index(1)
возвращает 2, а не 4, и происходит вторая распечатка.
Вы должны отслеживать свое текущее местоположение:
for i, x in enumerate(a):
for j, y in enumerate(b):
if x == y:
if i == j:
print("Same Value + Index")
else:
print("Same Value")
Если все, что вас волнует, это количество записей, которые соответствуют каждому условию:
both_match = len(set(enumerate(a)) & set(enumerate(b)))
Получить такое же количество «все, что соответствует», несколько сложнее. Вы можете использовать collections.Counter
, чтобы получить правильные числа:
ca = Counter(a)
cb = Counter(b)
value_match = sum(ca[k] * cb[k] for k in ca.keys() & cb.keys())