首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从线段列表中返回最大x坐标和最大y坐标?

如何从线段列表中返回最大x坐标和最大y坐标?
EN

Stack Overflow用户
提问于 2020-05-29 17:11:53
回答 2查看 35关注 0票数 0

我有一堆线段作为输入,它们是由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坐标。我该怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-29 17:29:17

这是你可以解决它的方法:

代码语言:javascript
复制
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))

输出:

代码语言:javascript
复制
Max(x) = 8
Max(y) = 7
票数 1
EN

Stack Overflow用户

发布于 2020-05-29 17:24:40

如果您正在尝试提取列表中的非元组值,那么您可以尝试如下所示:

代码语言:javascript
复制
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))

编辑:

我只是想看看它能写得多短,并想出了这一行:

代码语言:javascript
复制
max_x, max_y = map(lambda l : max([max(i) if isinstance(i, tuple) else i for i in l]), zip(*input_list))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62082436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档