gpt4 book ai didi

python - 使用 `str` 是在 Python 中处理数字的正确习惯用法

转载 作者:太空狗 更新时间:2023-10-29 21:24:29 25 4
gpt4 key购买 nike

我知道在 Python 中处理数字数字的一种方法是将数字转换为字符串,然后使用字符串方法将生成的“数字”切片为“数字”组。例如,假设我有一个测试素数的函数 prime,我可以确认一个整数 n 既是左值又是右值 truncatable prime。与

all(prime(int(str(n)[:-i])) and prime(int(str(n)[i:])) for i in range(1, len(str(n))))

此方法涉及首先将 n 转换为字符串以便对其进行切片,然后将该切片转换回整数以便检查其素数。也许这是我使用静态类型语言的历史,或者是关于字符串“昂贵”的模糊想法,或者是使用包含用于类似操作的内置功能的语言的经验(例如 Mathematica IntegerDigitsFromDigits );但我想知道这是否是执行此类任务的正确方法。

字符串和数字之间的来回转换是否是在 Python 中访问数字的正确方法,甚至是唯一方法。有没有更有效的方法?

最佳答案

在您的示例代码中,您可以使用 divmod 而不是对数字进行字符串切片。 divmod(x, y) 返回元组 x//y, x%y,其中 y 值为 10* *i 正是您想要的数字左右部分。这不一定更像 Pythonic,尽管它可能会更快一些。

sn = str(n)
all(prime(int(sn[:i])) and prime(int(sn[i:])) for i in range(1, len(sn))) # original
all(all(map(prime, divmod(n, 10**i))) for i in range(1, len(sn))) # variant using divmod

我认为对于更一般的数字运算,使用 str 可能是非常明智的,因为对数字基数的幂进行大量数学运算可能比直接对数字进行运算更难理解在一个字符串中。

编写代码以供阅读,除非它对性能非常敏感。

关于python - 使用 `str` 是在 Python 中处理数字的正确习惯用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20012421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com