Вы можете использовать понимание списка с zip
и взять abs
разницы между элементами в каждом tuple
:
[abs(i-j) for i,j in zip(l1,l2)]
А если вам нужна разница в процентах, как вы упомянули, вы можете использовать форматирование строки:
['{0:.2f}%'.format((min(i,j)/max(i,j))*100) for i,j in zip(l1,l2)]
Где в обоих случаях, упаковав оба списка в zip, вы создаете список кортежей, где i-й кортеж содержит i-й элемент из каждой последовательности аргументов или итераций:
list(zip(l1,l2))
# [(8, 3), (5, 6), (2, 4), (1, 3)]
Например:
l1 = [8,5,2,1]
l2 = [3,6,4,3]
['{0:.2f}%'.format((min(i,j)/max(i,j))*100) for i,j in zip(l1,l2)]
# ['37.50%', '83.33%', '50.00%', '33.33%']