Python:计算两个列表之间的一致性百分比?

Python:计算两个列表之间的一致性百分比?,python,Python,假设我有两个长度相同的Python列表x和y 一致性的定义是,如果x_i>x_j,那么y_i>y_j 例如,如果x是学生成绩的列表,y是他们毕业后的工资列表,则一致性意味着学生a的分数>a学生B->a将比B多,反之亦然 我如何有效地计算两个列表之间的一致性百分比(共有N*N-1/2对) 添加示例: 考虑两个列表: x=2,3,1 y=1,2,3 x0

假设我有两个长度相同的Python列表x和y

一致性的定义是,如果x_i>x_j,那么y_i>y_j

例如,如果x是学生成绩的列表,y是他们毕业后的工资列表,则一致性意味着学生a的分数>a学生B->a将比B多,反之亦然

我如何有效地计算两个列表之间的一致性百分比(共有N*N-1/2对)

添加示例:

考虑两个列表:

x=2,3,1 y=1,2,3

x0 x0>x2和y0 x1>x2和y1
所以最后,一致性百分比=1/3,基本上你需要找到x和y的可能组合

>>> from itertools import combinations                 
>>> x
[2, 3, 1]
>>> y
[1, 2, 3]
>>> combinations(x,2)
<itertools.combinations object at 0x1010482b8>
>>> combinations(y,2)
<itertools.combinations object at 0x101048208>
>>> list(combinations(x,2))
[(2, 3), (2, 1), (3, 1)]
>>> list(combinations(y,2))
[(1, 2), (1, 3), (2, 3)]
然后,找到一致性计数

>>> [1 if v1==v2 else 0 for v1,v2 in zip(('a<b' if a<b else "a>b" for a,b in combinations(x,2)), ('a<b' if a<b else "a>b" for a,b in combinations(y,2)))]
[1, 0, 0]
>>> concordance_count = sum(1 if v1==v2 else 0 for v1,v2 in zip(('a<b' if a<b else "a>b" for a,b in combinations(x,2)), ('a<b' if a<b else "a>b" for a,b in combinations(y,2))))
>>> concordance_count
1
>>> concordance_percentage = concordance_count/max(len(x),len(y))
>>> concordance_percentage
1/3
请提供,以及您尝试过的内容。
>>> zip(["a<b" if a<b else "a>b" for a,b in combinations(x,2)],["a<b" if a<b else "a>b" for a,b in combinations(y,2)])
[('a<b', 'a<b'), ('a>b', 'a<b'), ('a>b', 'a<b')]
>>> [1 if v1==v2 else 0 for v1,v2 in zip(('a<b' if a<b else "a>b" for a,b in combinations(x,2)), ('a<b' if a<b else "a>b" for a,b in combinations(y,2)))]
[1, 0, 0]
>>> concordance_count = sum(1 if v1==v2 else 0 for v1,v2 in zip(('a<b' if a<b else "a>b" for a,b in combinations(x,2)), ('a<b' if a<b else "a>b" for a,b in combinations(y,2))))
>>> concordance_count
1
>>> concordance_percentage = concordance_count/max(len(x),len(y))
>>> concordance_percentage
1/3