我如何将排列应用于列表?

问题描述 投票:3回答:1

[如何使Sympy置换作用于列表?例如,

from sympy.combinatorics import Permutation

lst = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
perm = Permutation([[0, 2, 8, 6], [1, 5, 7, 3]])
# Then something like...
perm * lst   # This doesn't work. Throws AttributeError because of list

我想要这样的东西返回(在此示例中:):

['g', 'd', 'a', 'h', 'e', 'b', 'i', 'f', 'c']

我已经读过https://docs.sympy.org/latest/modules/combinatorics/permutations.html,但不知道如何。

关于任何可能的解决方法的任何建议?

python-3.x list permutation sympy combinatorics
1个回答
5
投票

您可以只执行perm(lst)

>>> from sympy.combinatorics import Permutation
>>> lst = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
>>> perm = Permutation([[0, 2, 8, 6], [1, 5, 7, 3]])
>>> perm(lst)
['c', 'f', 'i', 'b', 'e', 'h', 'a', 'd', 'g']

您的示例输出似乎具有将给定排列的反向应用于列表的结果-如果这是您的必需输出,则您需要反转最终列表或排列中的每个列表。

来自here

可以将排列“不仅适用于”排列而适用于任何类似列表的对象。

© www.soinside.com 2019 - 2024. All rights reserved.