所以我有一个大约40项的数组,需要找到列表的n个排列。我知道我可以使用itertools.permutations,但那会给我40个!不同的订单需要更长的时间。
有没有办法可以准确地创建列表的n个排列?
itertools.permutations
为您提供了一个关于列表排列的迭代器。您可以逐个提取值,该功能不会预先计算任何内容。
如果你只想要在没有任何进一步约束的情况下产生的第一个n
排列,islice
是permutations
的结果。
>>> from itertools import permutations, islice
>>> perms = islice(permutations(yourlist), n)
只有在你使用perms
循环或者通过制造一个容器(for
,list
,tuple
,......)来迭代set
时才会开始计算排列。