Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从嵌套列表中查找与给定值最近的值_Python_Python 3.x_List - Fatal编程技术网

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中的子列表的
:子列表中的项:
等。