如何在python中查找排列中的最大数?

如何在python中查找排列中的最大数?,python,math,permutation,finite-group-theory,Python,Math,Permutation,Finite Group Theory,我想从一个排列中提取最大的数字。我现在正在使用groups模块,因此下面代码中的输出应该是15 from groups import * a = Perm((1, 2, 3), (4, 15, 6), (7, 8, 9)) max([x for x in a]) 使用以下公式定义置换的最大值: p = permutations([1, 2, 3]) l = list(p) max(l[0]) highestnum = a.max() 然后对给定的排列进行迭代。如果只想找到最大值,我无

我想从一个排列中提取最大的数字。我现在正在使用groups模块,因此下面代码中的输出应该是15


from groups import *

a = Perm((1, 2, 3), (4, 15, 6), (7, 8, 9))

max([x for x in a])

使用以下公式定义置换的最大值:

p = permutations([1, 2, 3])
l = list(p)
max(l[0])
highestnum = a.max()

然后对给定的排列进行迭代。

如果只想找到最大值,我无法得到你想要的这个排列。但是你试试这个-

    from itertools import permutations 
    perm = permutations([1, 2, 3, 4, 15, 6, 7, 8, 9]) 
    for i in list(perm): 
    print (max(i)) 

这段代码将始终作为输出。

首先,您没有正确创建排列。正确的语法如中第23页所示:

接下来,对该模块进行设置,使其理论上置换所有非负整数,其中有限多个映射到除自身以外的值。所以理论上,在这个模的排列中没有最高的数。正如您在第5页的链接所述

由于未明确定义的键等于其值(p[i]==i),因此未定义perm大小n

因此,从一个方面来说,你寻求“从排列中提取最高数量”是毫无意义的。然而,在任何给定的时间,表示该模块中的置换的数据结构的数量都是最大的。该模块试图对用户隐藏该信息,以保持作用于所有非负整数的理论观点。但是由于
Perm
类是从
dict
内置类型派生的,因此您可以使用

highestnum = max(a)
在您的示例中,它确实返回值
15
。但请注意,最大值可能很容易更改,而不会更改所表示的排列。例如,如果执行
print(a[20])
,似乎不会改变排列
a
,并使用
=
a
的值与其以前的值进行比较,得到
True
。但是现在
max(a)
产生值
20
。因此,
max(a)
不一致,取决于排列的当前内部表示,因此使用此值是不明智的

幸运的是,您可以找到一个更一致的“最高数”,即通过排列更改的最高数:

p = permutations([1, 2, 3])
l = list(p)
max(l[0])
highestnum = a.max()
这还会返回所需的结果,
15
。访问
a[20]
或任何其他值都不会改变
a.max()
,因此您应该满足于
max()


顺便说一下,关于您链接的文档,这里是文档,它是您链接到的预打印的完成版本。这是。然而,我在上面提到了你的链接。该文档中的Python代码使用了Python 2.6:我做了一些更改,使其在Python 3.7中运行,并用它来检查我的答案。

这里的置换与最大值有什么关系?我需要找到更大置换的最大值。那只是一个例子example@NewYork但是排列不会改变最大数。如果给定排列,如何查找最大数?我无法在conda或PyPI或快速web搜索中找到任何名为
组的模块。您从哪里获得此模块及其文档?置换组有许多可能的实现,具体的实现与您的问题有关。