Python:如何从这个列表中获取边缘值
我有一个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,
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)]
。