求大神指教python中如何提取一系列坐标的x值

2024-12-29 11:42:19
推荐回答(3个)
回答1:

首先,对于你最初的问题,如果rouDIct符合(1.0, 3.0) -> {1.0: 3.0}这样的格式的话,max(i for i in rouDict)(甚至max(rouDict))就可以了。


然后用字典存储坐标实在有点别扭,用列表更自然、类更抽象,不过我不擅长OOP……列表存储的话,积分函数可以改成这样(LoP(list of points)是存储点集的列表)。

def integral(LoP):
    prev, I = (None, None), 0 #initialize
    for (x, y) in LoP:
        if prev: #
            (x0, y0), prev = prev, (x, y)
            I += (y0 + y) * (x - x0) / 2
        else:
            prev = x, y
    return I

# way to access max_x of LoP:
max(x for (x, y) in LoP)

回答2:

datalist = [(0.00279866118867807, 0.000563994158327509), (0.0207527120021366, 0.00249009813782483), (0.0313592117151673, 0.00575558169533519)]
def maxX(lp,rp):
    return lp if lp[0]>rp[0] else rp

def minX(lp,rp):
    return lp if lp[0]    
print reduce(maxX,datalist)[0]
print reduce(minX,datalist)[0]

假设你原始数据是一个list,list里每个元素是一个tuple,如果是另外的格式的话转换一下也很简单

回答3:

rouDict是什么类型, 需要说明一下. 是python自带的set()?