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 中的排列可以作为函数调用,这就是第二行有效的原因。
我在 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 中的排列可以作为函数调用,这就是第二行有效的原因。