python - python在列表中查找相似性
问题描述
我希望有一个功能可以列出一个列表并根据灵敏度给我类似的数字[4,4.01,3.9]
或[71,69,72]
我尝试减去每个值,如果它小于灵敏度,则将这些数字添加到元组中,例如:
abs(4 - 4.01)= 0.01 => 0.01 < 0.5 => result += [(4,4.01)]
或者
abs(4.01 - 3.9)= 0.11 => 0.11 < 0.5 => result += [(4.01,3.9)]
但它的输出是
[(4, 4.1), (4, 3.9), (4.1, 4), (4.1, 3.9), (3.9, 4), (3.9, 4.1)]
我不想要这个我想要[4.01,4,3.9]
的[4,4.01,3.9,5,10,45]
Python
def collation(arr):
ret = []
xi = 0
while xi < len(arr):
yi = 0
while yi < len(arr):
if (xi == yi):
yi += 1
continue
if (abs(arr[xi] - arr[yi]) <= Sens):
ret += [(arr[xi], arr[yi])]
yi += 1
xi += 1
return ret
解决方案
您可以使用filter
函数来执行此操作,以获得满足您条件的所有这些值:
inlist = [4,4.01,3.9,5,10,45]
point_value = 4
threshold = 0.5
outlist = list(filter(lambda elem: round(abs(elem-point_value),2) <= threshold, inlist))
print(outlist)
输出:
[4, 4.01, 3.9]
推荐阅读
- android - LinearLayout 均匀分布
- c# - 使用 Azure 函数绑定从 Blob 存储中获取多个文件
- php - Laravel 拦截多参数 Artisan 事件
- bots - 当有人对消息做出反应时,我如何让我的 discord.js 机器人添加角色?
- react-native - 生成发布 APK 时出现重复资源错误(从 0.59.5 迁移到 0.61.5)
- c++ - 如何将字符串转换为 uint64_t?
- python - 如何在kivy中制作计时器+秒表应用程序
- python - 使用 psycopg2 读取一个巨大的 PostgreSQL 表
- macos - Karabiner-Elements 将键映射到组合键
- javascript - Vanilla JavaScript - 数组项未定义