在Python中获取整数的一部分
是否有一种优雅的方法(可能在在Python中获取整数的一部分,python,integer,Python,Integer,是否有一种优雅的方法(可能在numpy中)来获取Python整数的给定部分,例如说我想从1990中获取90 我可以做到: my_integer = 1990 int(str(my_integer)[2:4]) # 90 但是它很难看 还有其他选择吗?1990%100就可以了 (%是模运算符,返回除法的剩余部分,此处为1990=19*100+90。) 在回答被接受后添加: 如果您需要一些通用的东西,请尝试以下方法: def GetIntegerSlice(i, n, m): # retur
numpy
中)来获取Python整数的给定部分,例如说我想从1990
中获取90
我可以做到:
my_integer = 1990
int(str(my_integer)[2:4])
# 90
但是它很难看
还有其他选择吗?
1990%100
就可以了
(%
是模运算符,返回除法的剩余部分,此处为1990=19*100+90。)
在回答被接受后添加: 如果您需要一些通用的东西,请尝试以下方法:
def GetIntegerSlice(i, n, m):
# return nth to mth digit of i (as int)
l = math.floor(math.log10(i)) + 1
return i / int(pow(10, l - m)) % int(pow(10, m - n + 1))
它将返回i(作为int)的第n位到第m位,即
不确定它是否比您的建议有所改进,但它不依赖于字符串操作,编写起来很有趣
(注意:在除法之前将结果强制转换为
int
(而不是最后将结果强制转换为int
)也可以用于长整数。)取决于使用情况,但如果您知道您只需要最后两个,则可以使用模运算符,如下所示:1990%100
获得90
可能如下所示:
my_integer = 1990
my_integer % 100
以下是获取任意最后位数的通用函数:
In [160]: def get_last_digits(num, digits=2):
.....: return num%10**digits
.....:
In [161]: get_last_digits(1999)
Out[161]: 99
In [162]: get_last_digits(1999,3)
Out[162]: 999
In [166]: get_last_digits(1999,10)
Out[166]: 1999
你到底想实现什么?我想得到整数的一部分,正如我在问题中所解释的。这就是我问他的原因。大写是Python函数的一个糟糕的命名约定,不要向初学者展示这些东西,停止编写它。看看“标准”是什么。即使你不想用下划线写小写,也不要用大写字母。这是一种耻辱(在Python中)。
In [160]: def get_last_digits(num, digits=2):
.....: return num%10**digits
.....:
In [161]: get_last_digits(1999)
Out[161]: 99
In [162]: get_last_digits(1999,3)
Out[162]: 999
In [166]: get_last_digits(1999,10)
Out[166]: 1999