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