Python-for循环排序对列表并查找最大pai

2024-04-19 05:44:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经彻底研究过了,但是还没有找到一个明确的(或迂回的)答案来回答以下问题:我如何创建一个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”。

我的第一个循环运行良好,这只是第二个在定义我有麻烦的dominantx循环。我对Python比较陌生,所以请原谅任何简单的修复或错误。我对任何仍在执行循环的建议持开放态度,当然,也非常感谢任何帮助。谢谢您!


Tags: 答案in列表forifnprandomdom
1条回答
网友
1楼 · 发布于 2024-04-19 05:44:48

只需使用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]

相关问题 更多 >