Python - 用于循环列出有序对并找到最大对

时间:2014-10-19 00:35:09

标签: python list for-loop numpy

我已经彻底查看了,但是没有找到一个明确的(或环形的)回答以下问题:如何创建一个for循环,这将允许我找到最大的对,其中x和y在(x,y)是否大于或等于列表中的所有其他x和y?

所以,假设我有一个20个伪随机整数有序对的列表,我想找到一个使用for循环的最大有序对。

我目前的代码是:

np.random.seed(1234)
a = np.random.randint(0, 11,(20,2))
alst = list(allocationsset)
print alst

其中np是numpy的导入形式并打印, [[1,0],[8,9],[2,1],[3,2],[10,10]等......]

然后,我尝试使用以下函数进行for循环:

def dominantx (pairs):
    def maxx (pairs):
        maxlist = []
        for [a,b] in pairs:
            if a >= b:
                maxlist.append([a,b])
        return maxlist

    dom = maxx(pairs)
    domlist = []

    for [a,b] in dom:
        for [c,d] in dom:
            if a > c:
                domlist.append([a,b])
            if a == c:
                if b > d:
                    domlist.append([a,b])
                if b == d:
                    domlist.append([a,b])
                    domlist.append([c,d])
                else:
                    domlist.append([c,d])
            else:
                domlist.append([c,d])
    return domlist

dominantx(alst)

我相信我遇到的部分问题是用新的最大有序对替换“domlist”中的内容并将其作为答案返回,即我不想在新的最大有序对中添加“domlist”直到我从domlist中删除旧的最大有序对。

我的第一个循环工作正常,它只是我在遇到麻烦时定义dominx的第二个for循环。我对Python比较新,所以请原谅任何简单的修复或错误。我对任何仍然实现循环的建议持开放态度,当然,我们非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

只需使用max

arr = [[1,0],[8,9],[2,1],[3,2],[10,10]]
print(max(arr))

[10, 10]

如果你想在[1,1],[2,2]等中实际配对..

arr = [[1,1],[8,9],[2,2],[3,2],[13,10]]
pairs = [x for x in arr if x[0] == x[1]] # get all subelements with equal elements
print(max(pairs))
[2, 2]