在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