Python 从嵌套列表中查找与给定值最近的值
我有一个嵌套列表,如Python 从嵌套列表中查找与给定值最近的值,python,python-3.x,list,Python,Python 3.x,List,我有一个嵌套列表,如[[0,1,2],[9,5,3],[7,0,2]]和一个给定值4如何获得与给定值最接近的列表?我看到使用min()可能会有所帮助,但我不确定它是如何工作的。这是唯一的方法还是有其他选择 预期产出: [9,5,3]您确实可以使用min(),但具有自定义键功能: >>> lst = [[0,1,2],[9,5,3],[7,0,2]] >>> v = 4 >>> min(lst, key = lambda x: min(abs(
[[0,1,2],[9,5,3],[7,0,2]]
和一个给定值4
如何获得与给定值最接近的列表?我看到使用min()
可能会有所帮助,但我不确定它是如何工作的。这是唯一的方法还是有其他选择
预期产出:
[9,5,3]
您确实可以使用min()
,但具有自定义键功能:
>>> lst = [[0,1,2],[9,5,3],[7,0,2]]
>>> v = 4
>>> min(lst, key = lambda x: min(abs(i-v) for i in x))
[9, 5, 3]
让我们把它分解一下:
>>> [min(abs(i-v) for i in x) for x in lst]
[2, 1, 2]
>>> [[abs(i-v) for i in x] for x in lst]
[[4, 3, 2], [5, 1, 1], [3, 4, 2]]
如果存在平局(即关节最小值),则
min()
返回第一个实例在这种情况下的预期输出是什么?我猜-[9,5,3]。如果5和3在不同的子列表中会怎样?请回答您的问题,包括您的预期输出、您到目前为止尝试的预期输出的代码,以及您的尝试出现了什么问题,以使这是一个优雅的解决方案。您能进一步解释为什么需要在x上迭代吗?实际上我是python新手。@未知您必须检查每个子列表的每个值,以确定最小差异。如果您是python新手,您可能希望尝试将其编写为嵌套的for
循环,例如lst中的子列表的:子列表中的项:
等。