需要获取列表的子列表中每个索引的最小值和最大值。
如果我的列表是[[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行代码所做的工作非常明确,但有没有办法将其以元组解包的形式?
答案 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}