子列表中每个索引的最小值和最大值

时间:2018-08-08 17:38:47

标签: python

需要获取列表的子列表中每个索引的最小值和最大值。

如果我的列表是[[1, 2], [4, 1], [2, 2], [1, 6], [5, 3]],请执行以下操作:

xmin = min(i[0] for i in mylist)
ymin = min(i[1] for i in mylist)
xmax = max(i[0] for i in mylist)
ymax = max(i[1] for i in mylist)
# Results:
xmin = 1
xmax = 5
ymin = 1
ymax = 6

虽然我对这4行代码所做的工作非常明确,但有没有办法将其以元组解包的形式?

2 个答案:

答案 0 :(得分:7)

对于列表p,我们可以使用进行转置和解包

p1, p2 = zip(*p)

然后找到最小和最大为

max(p1)
min(p1)
max(p2)
min(p2)

答案 1 :(得分:1)

对于一般解决方案,您不应动态命名变量。相反,您可以使用字典。这将适用于每个子列表长度相同的任何列表列表。

L = [[1, 2], [4, 1], [2, 2], [1, 6], [5, 3]]

from operator import itemgetter

n = len(L[0])

d_min = {i: min(map(itemgetter(i), L)) for i in range(n)}
d_max = {i: max(map(itemgetter(i), L)) for i in range(n)}

print(d_min, d_max, sep='\n')

{0: 1, 1: 1}
{0: 5, 1: 6}