我正在matplotlib图上绘制pi的数字,但是为了做到这一点,我必须将数字拆分成单独的整数。我正在使用math.pi,有没有其他方法可以让它变得更容易?
我认为.split()仅适用于字符串,但我可能错了。
答案 0 :(得分:1)
你是正确的,字符串有.split()
方法,双打没有。
我认为你正在考虑将数字作为字符串。除了在某些基础中的文字表示外,数字实际上没有单独的数字。因此,您可以将数字转换为字符串并从那里开始。
例如
text = "%.20f" % math.pi
digits = [int(s) for s in text if s != "."]
print(digits)
答案 1 :(得分:1)
您想将每个数字拆分成一个列表吗?如果是这样,我会将其转换为字符串(因为数字被视为数字本身而不是数字组成的数字)然后通过创建一个排除小数点的列表来删除小数点。
import math
listOfDigits = [item for item in str(math.pi) if item != "."]
答案 2 :(得分:0)
您可以使用生成器执行此操作:
def split_number(number):
number_as_string = str(number)
for character in number_as_string:
if not character.isdigit():
continue
yield int(character)
import math
print(list(split_number(math.pi)))
# [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 9]
或者如果你喜欢单行:
list(int(character) for character in str(math.pi) if character.isdigit())
# or
[int(character) for character in str(math.pi) if character.isdigit()]
我认为这些答案更可取,因为使用isdigit
代替特殊外壳而非.
字符。