Another option to save all unequal elements with an index with a list:
list1 = ['I', 'C', 'A', 'N', 'R', 'U', 'N'] list2 = ['I', 'K', 'A', 'N', 'R', 'U', 'T'] # Append index, element1 and element2 as tuple to the list if they are not equal changes = [(i, list1[i], list2[i]) for i in range(len(list1)) if list1[i] != list2[i]] print(changes) #prints [(1, 'C', 'K'), (6, 'N', 'T')]
Not quite what you indicated as output, but it closes.
You can print the specified result using a loop:
for i in changes: print(i[0] + 1, i[1])
The comments suggested several alternative ways to develop an understanding of the list:
Using enumerate
and zip
:
changes = [(i, e1, e2) for i, (e1, e2) in enumerate(zip(list1, list2)) if e1 != e2]
Using enumerate
with start index and zip
:
changes = [(i, e1, e2) for i, (e1, e2) in enumerate(zip(list1, list2), 1) if e1 != e2]
Using zip
and itertools.count
:
import itertools changes = [(i, e1, e2) for i, e1, e2 in zip(itertools.count(), list1, list2)) if e1 != e2]
Using zip
and itertools.count
with a starting index:
changes = [(i, e1, e2) for i, e1, e2 in zip(itertools.count(1), list1, list2)) if e1 != e2]
All of them produce the same result as the original, but use different (best) python functions.
source share