if i not in combos:这将花费很长时间,因为列表中的成员资格测试是(最坏的情况)O(N)-它必须扫描每个元素。您可以
set改用:
>>> from itertools import permutations>>> x = ["$5", "$10", "$10", "TAX", "$5", "20%", "BOGO", "BOGO", "TAX", "BOGO"]>>> %time p = set(permutations(x, 9))CPU times: user 0.88 s, sys: 0.01 s, total: 0.90 sWall time: 0.90 s>>> len(p)75600


![在Python中生成唯一排列[重复] 在Python中生成唯一排列[重复]](http://www.mshxw.com/aiimages/31/612027.png)
