Python中的循环置换运算符

乌韦·施耐德

我需要一个python函数(一个创建函数的函数),该函数为长度为N的列表创建所有循环排列运算符。

对于python列表a(例如a = [1, 2, 3, 4,5,6], N= 6),可以定义一个函数

def cyclic_perm(a):
    n = len(a)
    b = [[a[i - j] for i in range(n)] for j in range(n)]
    return b

这样就可以为列表提供所有可能的循环排列,在这种情况下为6个列表。

我希望函数不给我列表,而是(在这种情况下)6个运算符,当应用于该列表时,每个运算符都给出一个排列的列表。

Paritosh辛格

我不太确定此练习的目标是什么,但是您可以使用部分功能来实现。

from functools import partial

def reorder_from_idx(idx, a):
    return a[idx:] + a[:idx]

def cyclic_perm(a):
    return [partial(reorder_from_idx, i) for i in range(len(a))]


a = [1, 2, 3, 4, 5, 6]
result = cyclic_perm(a)
print(result)
#[functools.partial(<function reorder_from_idx at 0x00000298D92189D8>, 0),
# functools.partial(<function reorder_from_idx at 0x00000298D92189D8>, 1),
# functools.partial(<function reorder_from_idx at 0x00000298D92189D8>, 2),
# functools.partial(<function reorder_from_idx at 0x00000298D92189D8>, 3),
# functools.partial(<function reorder_from_idx at 0x00000298D92189D8>, 4),
# functools.partial(<function reorder_from_idx at 0x00000298D92189D8>, 5)]
result[3](a)
#[4, 5, 6, 1, 2, 3]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章