gpt4 book ai didi

python - 通过排列过滤

转载 作者:太空宇宙 更新时间:2023-11-03 18:30:41 25 4
gpt4 key购买 nike

我正在编写一个项目,我意识到当我尝试进行长排列时,我的程序需要很长时间才能运行。好处是我需要的唯一排列是以“#”开头和结尾的排列。这是我用来收集排列的函数:

def permut(array):
if len(array) == 1:
return [array]
res = []
for permutation in permut(array[1:]):
for i in range(len(array)):
res.append(permutation[:i] + array[0:1] + permutation[i:])
return res

permut('c#e#')

我需要的唯一排列是 array[0] = '#'array[len(s)-1] = '#'。如果这是一个类似的问题,我深表歉意,但是我将如何过滤我不需要的字符串并使我的代码真正运行而不需要永远。

最佳答案

从输入中取出两个 # 字符,生成剩下的排列,并在生成的排列的每一端粘贴 # 字符。请注意,您很可能仍然有太多的排列需要经历。

顺便说一句,您不需要编写自己的排列生成器。标准库提供itertools.permutations ,它比您的代码快得多,并且没有您的代码所存在的一些错误。

import itertools
def hash_on_each_end_permutations(array):
array = list(array)
array.remove('#')
array.remove('#')
for subpermutation in itertools.permutations(array):
yield '#' + ''.join(subpermutation) + '#'

关于python - 通过排列过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22432429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com