假设我有一个列表:如何返回列表中与Python中的值密切相关的最常见项目?
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)
在此先感谢。
假设我有一个列表:如何返回列表中与Python中的值密切相关的最常见项目?
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)
在此先感谢。
这取决于你最常见的含义。您可以使用此算法,并设置精度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]]
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)
答:2.2,2.23,2.24
很好的答案!我会用我的一些价值尝试它。 – Edwinner
究竟如何定义 “密切相关的”?没有一个确切的定义,就没有办法解决这个问题。 –
你需要告诉这样一个功能,“最常见和相关的数字”是什么意思。你什么意思?你的意思是绝对的还是相对的?距离足够近? –