gpt4 book ai didi

python - 什么是获取 list1[in] < list2[i] 次数的 pythonic 方法,反之亦然

转载 作者:太空宇宙 更新时间:2023-11-03 12:25:13 26 4
gpt4 key购买 nike

我有两个带值的列表,预期结果是一个元组 (a,b)其中 alist1[i] < list2[i] 中 i 值的个数, 和 b是 i 值的数量,其中 list1[i] > list2[i] (根本不计算相等性)。

我有这个解决方案,而且效果很好:

x = (0,0)
for i in range(len(J48)):
if J48[i] < useAllAttributes7NN[i]:
x = (x[0]+1,x[1])
elif J48[i] > useAllAttributes7NN[i]:
x = (x[0], x[1]+1)

但是,我正在努力提高我的 python 技能,而且实现它的方式似乎非常非 pythonic。

实现相同结果的 pythonic 方法是什么?

仅供引用,这样做是为了实现 binom_test() 所需的输入试图证明两种算法在统计上不相同。
不过,我认为此信息对特定问题没有任何额外值(value)。

最佳答案

一种方法是建立一组分数,然后将它们相加。

scores = [ (a < b, a > b) for (a, b) in zip(J48, useAllAttributes7nn) ]
x = (sum( a for (a, _) in scores ), sum( b for (_, b) in scores ))

// Or, as per @agf's suggestion (though I prefer comprehensions to map)...
x = [ sum(s) for s in zip(*scores) ]

另一种是将它们压缩一次然后分别计算分数:

zipped = zip(J48, useAllAttributes7nn)
x = (sum( a < b for (a, b) in zipped ), sum( a > b for (a, b) in zipped ))

请注意,这在 Python 3 中不起作用(感谢@Darthfett)。

关于python - 什么是获取 list1[in] < list2[i] 次数的 pythonic 方法,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10388813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com