相关疑难解决方法(0)

在Python中处理非常大的数字

我一直在考虑用Python进行快速扑克手牌评估.在我看来,加速这个过程的一种方法是将所有卡面和套装表示为素数,并将它们相乘以代表手.白衣:

class PokerCard:
    faces = '23456789TJQKA'
    suits = 'cdhs'
    facePrimes = [11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 53, 59, 61]
    suitPrimes = [2, 3, 5, 7]
Run Code Online (Sandbox Code Playgroud)

    def HashVal(self):
      return PokerCard.facePrimes[self.cardFace] * PokerCard.suitPrimes[self.cardSuit]
Run Code Online (Sandbox Code Playgroud)

这会给每只手一个数值,通过模数可以告诉我手中有多少国王或多少颗心.例如,任何有五个或更多球杆的手将平均分为2 ^ 5; 任何有四个国王的手都会平均分为59 ^ 4等.

问题在于,像AcAdAhAsKdKhKs这样的七张牌的手的哈希值大约为62.7千万亿,内部代表需要大于32位.有没有办法在Python中存储这么大的数字,这将允许我对它进行算术运算?

python optimization largenumber

120
推荐指数
5
解决办法
22万
查看次数

Cython :(为什么/何时)使用Py_ssize_t进行索引是否更可取?

这是这个问题的后续行动.

(为什么/何时)是否更适合Py_ssize_t用于索引?在我刚发现的文档中

# Purists could use "Py_ssize_t" which is the proper Python type for
# array indices.
Run Code Online (Sandbox Code Playgroud)

- >这是否始终指的是索引NumPy/Cython - 数组/ - 应该使用的视图Py_ssize_t

- >是Py_ssize_t例如一个unsigned int,这样我可以不使用@cython.boundscheck(False)

python indexing numpy cython unsigned-integer

34
推荐指数
2
解决办法
1万
查看次数

64位有符号整数有多大?

redis中,

HINCRBY支持的值范围限制为64位有符号整数.

我想知道64位有符号整数有多大.我很抱歉,如果这是常识,我的背景是经济学,没有人告诉我那里的问题的答案.

提前致谢 :)

64-bit integer

30
推荐指数
2
解决办法
9万
查看次数

__len__ 不能返回大数字

以下代码:

class Container:

    def __len__(self):
        return 10**100

c = Container()
print(len(c))
Run Code Online (Sandbox Code Playgroud)

返回

溢出错误:无法将“int”放入索引大小的整数中

我读过这个问题已被标记为 WON'T FIX但也许它已在另一个问题中修复?除了使用自定义属性来存储容器大小之外,还有其他解决方法吗?

我使用的是 Python 3.6.9,但在此版本中尚未修复。

python

0
推荐指数
1
解决办法
111
查看次数