Python:连接字符串列表排列的有效方法

2024-04-28 11:14:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串列表:

words = ["AAAA", "xyzw", "1234"]

{i>从目标^ 1>到所有项目的连接

^{pr2}$

words可能是一个很长的列表,每个字符串的长度可能非常长。在


有没有比下面这种愚蠢的方法更有效的方法呢,我一个接一个地生成每个排列,然后join它们?在

import itertools

def join_perms(words):
    for perm in itertools.permutations(words):
        yield ''.join(perm)

def main():
    words = ["AAAA"*10, "xyzw"*10, "1234"*10] * 3
    for result in join_perms(words):
        # do something with result
        pass

>>> import timeit
>>> timeit.timeit(main, number=100)
10.4355671406

每次追加到words时,运行时都会变得异常糟糕,因为置换是O(n!)问题。在


Tags: 方法字符串inimport列表fordefwords