我有一个字符串列表:
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!)
问题。在
目前没有回答
相关问题 更多 >
编程相关推荐