【问题标题】:Python - for loop of a list of ordered pairs and finding the greatest pairPython - 有序对列表的for循环并找到最大的对
【发布时间】:2014-10-19 00:35:08
【问题描述】:

我已经彻底查看,但没有找到以下问题的明确(或迂回)答案:如何创建一个 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 的第二个for 循环。我对 Python 比较陌生,所以请原谅任何简单的修复或错误。我对仍然实现循环的任何建议持开放态度,当然,非常感谢任何帮助。谢谢!

【问题讨论】:

  • “(x,y) 中的 x 和 y 大于或等于列表中所有其他 x 和 y 的最大对”到底是什么意思?哪个是最大的:(2, 5) 还是 (4, 0)?
  • (4,0)。我想我没有详细说明。有序对是 x 和 y 之间的关系,所以我想要最大的 x 开始。然后,我将所有 y 相互比较,以使 x 和 y 都最大化。因此,在 x 已经最大化的情况下,y 正在被最大化。

标签: python list for-loop numpy


【解决方案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]

【讨论】:

  • 感谢您的建议!我没有按照你建议的方式使用它,但我将它实现到了dominativex 函数中,它似乎可以找到最大对。虽然我会在替换“domlist”中的元素和附加新变量方面听取其他人的建议。
  • 不用担心,我并不完全清楚您认为的配对,但使用列表组合进行最大和过滤会起作用
猜你喜欢
  • 2021-01-10
  • 2017-02-28
  • 2017-01-25
  • 2017-09-30
  • 1970-01-01
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
相关资源
最近更新 更多