在Python中,在集合中计算大量it项的有效方法?

在Python中,在集合中计算大量it项的有效方法?,python,count,permutation,large-data,memory-efficient,Python,Count,Permutation,Large Data,Memory Efficient,所以,我有这个代码 #!/usr/bin/env python3.7 from itertools import permutations count = len(set(permutations(range(171476), 3))) print(f'Final Count: {count}\n') 然而,我真的试图以更有效的方式获得最终计数,但我不知道我正在寻找的库函数,也不知道以更有效的方式获得答案的其他方式 有什么想法吗?您正在创建3个整数排列[0171476)。这意味着在结果元

所以,我有这个代码

#!/usr/bin/env python3.7

from itertools import permutations

count = len(set(permutations(range(171476), 3)))

print(f'Final Count: {count}\n')
然而,我真的试图以更有效的方式获得最终计数,但我不知道我正在寻找的库函数,也不知道以更有效的方式获得答案的其他方式


有什么想法吗?

您正在创建3个整数排列
[0171476)
。这意味着在结果元组中,第一个整数有
171476
选项,第二个
171476-1
选项和最后一个
171476-2
选项。注意到模式了吗

def num_permutations(n, k):
    result = 1
    while k:
        result *= n
        k -= 1
        n -= 1
    return result
据此,我们找到了答案:

>>> num_permutations(171476, 3)
5041995277625400

采纳了你的建议,克尔伍德,谢谢我想这是我的意图,我想把这个数的所有排列都分成三组,所以(0,0,0),(0,0,1),(0,0,2)等。@GregTheHun这是一个不同的函数…
排列
不允许重复使用元素。如果允许多次使用同一个数字,那么它只是
n**k
。您描述的函数是。对,目标是在一个列表中获得三个项目的分组列表(非常大),我不希望这三个项目的顺序完全相同,但你可以让这三个相同的单词以不同的顺序排列。看来itertools.product函数是我所寻找的最好的例子。但是,现在我想知道是否有一种好方法可以使用多处理加快项目的计数。甚至可以使用集合。计数呃?(原帖编辑)@GregTheHun请撤销编辑并发布新问题。