如何返回列表中与Python值极为密切相关的最常见项?

时间:2016-11-26 17:28:47

标签: python python-3.x math

假设我有一个清单:

lst = [2.2, 2.23, 2.24, 3, 4, 5, 3.8]

我想知道是否有一个功能可以确定我最常见和相关的数字是:

most_common = [2.2, 2.23, 2.24]

从那里我可以返回最小的列表或做我想做的任何其他操作。

这是我目前使用的功能,我对结果不满意

max(set(lst), key=lst.count)

提前致谢。

2 个答案:

答案 0 :(得分:2)

这取决于你最常见的意思。您可以使用此算法并使用eps变量设置精度:

a = [2.2, 2.23, 2.24, 3, 4, 5, 3.8]
eps = 0.5


def find_relative(values, eps):
    minimum, maximum = 0, 0
    result = []
    temp = []
    for v in sorted(values):
        if not temp:
            minimum = maximum = v
            temp.append(v)
        else:
            if abs(v - minimum) < eps and abs(v - maximum) < eps:
                temp.append(v)
                if v < minimum:
                    minimum = v
                elif v > maximum:
                    maximum = v
            else:
                if len(temp) > 1:
                    result.append(temp)
                minimum = maximum = v
                temp = [v]
    return result


print(find_relative(a, eps))  # [[2.2, 2.23, 2.24], [3.8, 4]]

答案 1 :(得分:1)

a = [2.2, 2.23, 2.24, 3, 4, 5, 3.8]
a_round = []
a_1 = []

for item in a:
    a_round.append(round(item,1))

for ir in range(0, len(a_round)):
    if a_round.count(a_round[ir]) > 1:
        a_1.append(a[ir])

print(a_1)

ans:[2.2,2.23,2.24]