我有 2 个使用 itertools.permutations 的函数。创建长度至少为 6 个字符的数组时如何解决内存错误(如果少于 6 个字符,则一切正常)
def generate_permutations(length):
numbers = list(range(10))
permutations = list(set(i for i in itertools.permutations(numbers, length)))
return permutations
def get_all_variants(string: str) -> list[str]:
def is_not_start_with_digit(item):
return not item[0].isdigit()
return sorted(filter(is_not_start_with_digit, list(set([''.join(p) for p in permutations(string)]))))
看来你在中间阶段形成集合和列表是徒劳的。这是一个代码,在一台相当脆弱的机器上,仅在最后一步(11 个字符,21772800 个选项)“思考”30 秒。我懒得等到内存错误 :) 我希望我能正确理解任务。
更新。
set在任务中,可能需要,但添加功能return set(实际上并没有减慢速度