Sage 中是否存在将排列应用于列表的函数?

Is there exist a function in Sage that applies a permutation to a list?

我在 Sage 中遇到以下问题:

我有一组排列对象和一组列表,每个长度都是 2。我希望有一个内置函数可以按以下方式将排列应用于列表,例如:

result = (1,2,4)(3,5).apply_to([1,3])
print result
[2,5]

如果没有,请提供有关如何编写此函数的任何提示。谢谢!

您可以尝试使用 from_cycles:

sage: from sage.combinat import permutation
sage: perm = permutation.from_cycles(5, ((1,2,4), (3,5)))
sage: perm  # -> [2, 4, 5, 1, 3]
sage: res = [perm[i-1] for i in [1, 3]]
sage: res   # -> [2, 5]

perm[i-1] 中的 -1 是必需的,因为您的排列从 1 开始,而不是 0。有一种更优雅的方法可以将排列应用于列表:请参阅 .

与主角hiro的回答类似,但可能更直接:

sage: a = Permutation('(1,2,4)(3,5)')
sage: result = [a(i) for i in [1,3]]
sage: result
[2, 5]

一点是 Sage 中的排列可以作为函数调用,这就是第二行有效的原因。