python - 在Python中计算集合中的大量数字的有效方法?

标签 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 种排列[0, 171476)。这意味着在结果元组中,第一个整数有 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

关于python - 在Python中计算集合中的大量数字的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60343546/

相关文章:

python - Rpy2:如何访问R列表类型的变量?

python - 使用 Python 的多个属性直接在字典或 json 对象中定位元素

python - Python中的对象和类有什么区别

mysql - 按日期计数和分组应在没有值时返回 0

mysql - 使用 SQL 返回与使用连接表的数组中的所有项目匹配的结果

python - 将 Glue ETL 作业加载到雪花中时出错

JavaScript foreach 事件监听器最终得到相同的计数

random - 我可以在Clojure中进行确定性的随机播放吗?

r - 从 R 中的四个整数列表生成所有可能的排列

java - 具有重复的正则表达式排列