我有一堆线段作为输入,它们是由x坐标和y坐标组成的。水平线段具有左右x坐标和唯一的y坐标,而垂直线段具有上下y坐标和唯一的x坐标。我计算出它们会是这样的:
水平段= ((2,8),4)
垂直线段= (3,(2,5))
所有分段= ((2,8),1),(3,(2,5)),(5,(3,4)),(4,(6,7))
我想返回最大的x坐标和最大的y坐标。我该怎么做呢?
发布于 2020-05-29 17:29:17
这是你可以解决它的方法:
data = [((2,8), 1), (3, (2,5)), (5, (3,4)), (4, (6,7))]
x = []
y = []
for elem in data:
if type(elem[0])==tuple:
x.append(max(elem[0]))
else:
x.append(elem[0])
if type(elem[1])==tuple:
y.append(max(elem[1]))
else:
y.append(elem[1])
print("Max(x) =",max(x))
print("Max(y) =",max(y))输出:
Max(x) = 8
Max(y) = 7发布于 2020-05-29 17:24:40
如果您正在尝试提取列表中的非元组值,那么您可以尝试如下所示:
d = [((2,8), 1), (3, (2,5)), (5, (3,4)), (4, (6,7))]
d_x = [x for x, y in d if not isinstance(x, tuple)]
d_y = [y for x, y in d if not isinstance(y, tuple)]
print ("Max X:", max(d_x))
print ("Max Y:", max(d_y))编辑:
我只是想看看它能写得多短,并想出了这一行:
max_x, max_y = map(lambda l : max([max(i) if isinstance(i, tuple) else i for i in l]), zip(*input_list))https://stackoverflow.com/questions/62082436
复制相似问题