Python,如何获得两个列表之间的百分比精度

2024-10-17 08:28:46 发布

您现在位置:Python中文网/ 问答频道 /正文

Supoose I有2个矩阵(列表列表)

list1 = [[1, 2, 3, 4], [2, 6, 7, 7], [3, 6, 2, 9], [4, 7, 4, 3]]

list2 = [[1, 2, 3, 4], [9, 4, 3, 5], [3, 5, 2, 7], [1, 9, 8, 3]]

如何获得2之间的百分比精度。如果两个矩阵都有 相同的值(在完全相同的列表中),则精度为100%

我已经试过使用

len(set(test_list1) & set(test_list2)) / float(len(set(test_list1) | set(test_list2))) * 100

但它只适用于单数列表,而不适用于列表列表


Tags: test列表len精度矩阵float百分比set
3条回答

这个很好用

list1 = [[1, 2, 3, 4], [2, 6, 7, 7], [3, 6, 2, 9], [4, 7, 4, 3]]

list2 = [[1, 2, 3, 4], [2, 6, 7, 7], [3, 6, 2, 9], [4, 7, 4, 3]]

first_list = [item for sublist in list1 for item in sublist] 
second_list = [item for sublist in list2 for item in sublist] 

common = set(first_list).intersection(second_list)
total = set(first_list).union(second_list)

print((len(common)/len(total))*100)

你可以试试

print(sum([sum([1 if x == list2[inx1][inx2] else 0 for inx2, x in enumerate(i)]) for inx1, i in enumerate(list1)]) / sum([len(i) for i in list1]) * 100)

输出

43.75

这是对列表1和列表2的内部列表之间的匹配进行计数,对于每个匹配,它将对其进行计数,对于未匹配,则不会进行计数。 然后将结果除以列表1中所有元素的计数,再乘以100

它有助于:

result = []
for test_list1, test_list2 in zip(list1, list2):
    result.append(len(set(test_list1) & set(test_list2)) / float(len(set(test_list1) | set(test_list2))) * 100)
print(sum(result) / len(result))

相关问题 更多 >