-2
说我有这个列表: [1,1,2,2] 我想穿过这个所有的排列组合。 如果我打印相同的组合将被打印4次。 对于[1,1,1,3]同一个将被打印6次, 对于[1,1,1,3,3] 12.在Python中计算重复排列
一般:(a1)! (a2)! ...(an)! 是否有任何函数可以在Python中执行此操作? 如果否,你能给我一个在Python中的算法吗?
说我有这个列表: [1,1,2,2] 我想穿过这个所有的排列组合。 如果我打印相同的组合将被打印4次。 对于[1,1,1,3]同一个将被打印6次, 对于[1,1,1,3,3] 12.在Python中计算重复排列
一般:(a1)! (a2)! ...(an)! 是否有任何函数可以在Python中执行此操作? 如果否,你能给我一个在Python中的算法吗?
您是否在寻找类似以下的东西?
import math
def repeats(nums):
counts = dict()
result = 1
for n in nums:
if n in counts:
counts[n] += 1
else:
counts[n] = 1
for n in counts.keys():
result *= math.factorial(counts[n])
return result
print repeats([1, 1, 2, 2]) # prints 4
print repeats([1, 1, 1, 3]) # prints 6
print repeats([1, 1, 1, 3, 3]) # prints 12
您在算法中包含了算法。你的公式定义了一个算法。 – 2015-02-06 12:07:10
好吧我知道数学,但我真的不知道如何将这些知识暗示给python – 2015-02-06 12:09:10
你有没有试过在python中搜索google阶乘因子?然后乘以Python的结果?我认为它不需要顶级编码器级别的python体验。 – 2015-02-06 12:10:41