在Python中获取整数的一部分

时间:2016-04-02 20:41:40

标签: python integer

是否有一种优雅的方式(可能在numpy中)获取Python整数的给定部分,例如说我想从90获得1990

我能做到:

my_integer = 1990
int(str(my_integer)[2:4])
# 90

但这很难看。

还有其他选择吗?

4 个答案:

答案 0 :(得分:9)

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的第n个到第m个数字(如int),即

>>> GetIntegerSlice(123456, 3, 4)
34

不确定它是否比你的建议有所改进,但它不依赖于字符串操作而且编写起来很有趣。

(注意:在进行除法之前转换为int(而不是仅在结尾将结果转换为int)使得它也适用于长整数。)

答案 1 :(得分:4)

这是获取任意数量的最后数字的通用函数:

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

答案 2 :(得分:3)

取决于使用,但如果你知道你只想要最后两个,你可以使用模数运算符,如:1990%100得到90

答案 3 :(得分:3)

也许是这样的:

my_integer = 1990
my_integer % 100