Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List - Fatal编程技术网

Python:如何从这个列表中获取边缘值

Python:如何从这个列表中获取边缘值,python,list,Python,List,我有一个python列表,比如 a = [ [[1,2,(3,4)],[1,2,(5)],[-3,3,(3)],[8,-2,(5)]], [[1,2,(3,4,5)],[-1,222,(3,4,5)],[99,2,(3)],[8,-2,(4,5)]] ] 每个列表元素中的元组都是完全无用的,请忽略它,但删除它们 我想从每个位置的每个列表元素中获取最大最小值 示例输出结构如下所示 li = [[xmin, ymin, xmax, ymax], [xmin, ymin, xmax,

我有一个python列表,比如

a = [
    [[1,2,(3,4)],[1,2,(5)],[-3,3,(3)],[8,-2,(5)]],
    [[1,2,(3,4,5)],[-1,222,(3,4,5)],[99,2,(3)],[8,-2,(4,5)]]
]
每个列表元素中的元组都是完全无用的,请忽略它,但删除它们

我想从每个位置的每个列表元素中获取最大最小值

示例输出结构如下所示

li = [[xmin, ymin, xmax, ymax], [xmin, ymin, xmax, ymax] ]
在这种情况下,li是
[-3,-2,8,3],-1,-2,99222]


那么有什么简单的方法吗?谢谢如果您有权访问numpy,您可以使用。您可以使用
axis
参数获取数组中某一列的最大值。

您可以使用zip:

a = [ [[1,2,(3,4)],[1,2,(5)],[-3,3,(3)],[8,-2,(5)] ],
[[1,2,(3,4,5)],[-1,222,(3,4,5)],[99,2,(3)],[8,-2,(4,5)] ] ]

>>> i, h = zip(*a[0]), zip(*a[1])
>>> [min(i[0]), min(i[1]), max(i[0]), max(i[1])]
[-3, -2, 8, 3]
>>> [min(h[0]), min(h[1]), max(h[0]), max(h[1])]
[-1, -2, 99, 222]

首先,一个次要的风格点是,对于小的固定长度列表,应该使用元组。即:使用
(xmin,ymin,xmax,ymax)
而不是
[xmin,ymin,xmax,ymax]

[(min(t[0] for t in lst),
  min(t[1] for t in lst),
  max(t[0] for t in lst),
  max(t[1] for t in lst))
 for lst in a]

似乎和你昨天问的问题差不多:如果你想要一个只有一个元素的元组,正确的语法是
(x,)
。我们可以不包括其他库吗?我们可以使用循环吗?因为我在一个列表中可能得到更多的元素?但是如果列表结构相同,你可以使用相同的方法。对较大的输入使用列表理解:
[[min(I[0])、min(I[1])、max(I[0])、max(I[1])for I in(zip(*I)for I in a)]