我被困在下面的問題: 有正常的置換函數:排列組合與蟒蛇修改
def all_perms(elements):
if len(elements) <=1:
yield elements
else:
for perm in all_perms(elements[1:]):
for i in range(len(elements)):
yield perm[:i] + elements[0:1] + perm[i:]
在這裏,我得到預期
for pz in all_perms([1,2,3]):
print(pz)
[1, 2, 3]
[2, 1, 3]
[2, 3, 1]
[1, 3, 2]
[3, 1, 2]
[3, 2, 1]
然後,我有簡單的反向功能:
def reverse(rx):
return -rx
怎麼看功能perm_rev(iterable)導致排列爲每個元素都要被顛倒? [1,2]的答案會是這樣的:
for pz in perm_rev([1,2]):
print(pz)
[1,2]
[2,1]
[-1,2]
[1,-2]
[-2,1]
[2,-1]
[-1,-2]
[-2,-1]
謝謝!
@Martijn皮特斯和unutbu:謝謝你,但我需要使用反轉功能(這裏簡化了)。實際上,反向必須是修改元素的任何函數。元素可以是一個列表。 – pro100