【发布时间】:2013-11-15 23:25:08
【问题描述】:
我了解在 Python 中处理数字的数字的一种方法是将数字转换为字符串,然后使用字符串方法将生成的“数字”分割成“数字”组。例如,假设我有一个测试素数的函数prime,我可以用
all(prime(int(str(n)[:-i])) and prime(int(str(n)[i:])) for i in range(1, len(str(n))))
此方法首先将 n 转换为字符串以便对其进行切片,然后将该切片转换回整数以便检查其素数。也许这是我使用静态类型语言的历史,或者是一些模糊的认为字符串“昂贵”的想法,或者是包含用于类似操作的内置功能的语言的经验(例如 Mathematica 的 IntegerDigits 和 FromDigits);但我想知道这是否是执行此类任务的正确方法。
在字符串和数字之间来回转换是否是在 Python 中访问数字的正确(甚至是唯一)方法。有没有更有效的方法?
【问题讨论】:
-
出于好奇,这是针对Project Euler 的问题吗?我喜欢那个网站!
-
对于非常大的数字和/或大量重复,一种减少开支的方法是创建一个变量来保存数字的字符串版本。这样一来,您就不会调用两次
str。 -
Python 是强类型的——尽管它通常不是显式或静态类型的。
-
@dstromberg:没错。固定。
-
模数和整数除法有什么问题?
标签: python string indexing type-conversion digits