是否有一种优雅的方式(可能在numpy
中)获取Python整数的给定部分,例如说我想从90
获得1990
。
我能做到:
my_integer = 1990
int(str(my_integer)[2:4])
# 90
但这很难看。
还有其他选择吗?
答案 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