比较两个列表的列表元素(略有不同)

时间:2019-05-12 18:57:36

标签: python list iteration

我有两个整数列表(只有正整数):a和b。现在,我想将a [0]与b [0],a [1]与b [1],a [2]与b [2]进行比较,依此类推,但是我不知道如何做。 >

更具体地说,我想知道a [0]和b [0]之间的距离,等等,并将结果保存在列表中(或者,最好是列出百分比的列表,如果较大的整数为100%,则较小的整数将占较大整数的百分比(fe 2是4的50%)。

我有Python 3.7.3。

1 个答案:

答案 0 :(得分:6)

您可以将列表理解与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)]

在两种情况下,通过压缩两个列表,您将创建一个元组列表,其中第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%']