如何在python中将数字(而不是字符)分成两部分
在python中,如果没有任何算术运算,如何将一个数字一分为二?例如,下表:如何在python中将数字(而不是字符)分成两部分,python,split,integer,number-formatting,Python,Split,Integer,Number Formatting,在python中,如果没有任何算术运算,如何将一个数字一分为二?例如,下表: 20670005000000 30003387889032 44555008000004 我希望字符串在拆分后看起来像下面的列(并保留可用于数值分析的数字): 在Python中,最整洁的方法是什么?是否有直接处理此问题的python模块?这是一种可能的方法: N = 10000000 i = 20670005000000 # The first part of the number i i // N # the s
20670005000000
30003387889032
44555008000004
我希望字符串在拆分后看起来像下面的列(并保留可用于数值分析的数字):
在Python中,最整洁的方法是什么?是否有直接处理此问题的python模块?这是一种可能的方法:
N = 10000000
i = 20670005000000
# The first part of the number i
i // N
# the second part
i % N
我不知道这是否是最好的方法,但您可以将其转换为字符串,然后将其拆分,再将其转换为整数:
number = (int(str(number)[:len(number)/2]), int(str(number)[len(number)/2:]))
这将为您提供一个工具,您可以稍后使用。
您可以通过使用列表理解来进一步优化此操作。假设每次都应在
中心对数字进行精确分割,我们可以使用字符串和切片来获得这两个数字
在此处使用单个数字:
>>> s = str(20670005000000)
>>> l = int(len(s)/2)
>>> a,b = s[:l],s[l:]
>>> int(a)
=> 2067000
>>> int(b)
=> 5000000
以下是数字列表:
for ele in map(str,arr):
l = int( len(ele)/2 )
a,b = ele[:l], ele[l:]
print(int(a), int(b))
#驱动程序值
IN : arr = [20670005000000, 30003387889032, 44555008000004]
OUT : 2067000 5000000
3000338 7889032
4455500 8000004
这个问题中现有的操作模式似乎是将每个字符串值一分为二
import re
s = [20670005000000, 30003387889032, 44555008000004]
final_string = [map(int, re.findall('.{'+str(len(str(i))//2)+'}', str(i))) for i in s]
输出:
[[2067000, 5000000], [3000338, 7889032], [4455500, 8000004]]
您可以将int映射到str,然后拆分它。记得把它转换回int吗
data = [20670005000000,
30003387889032,
44555008000004,]
str_data = map(str, data)
res = map(lambda x: [x[:len(x)//2],x[len(x)//2:]], str_data )
res = map(int, reduce(lambda x,y: x+y, res) )
print res
输出:
[2067000, 5000000, 3000338, 7889032, 4455500, 8000004]
假设str.len()
不涉及算术运算,比较两个整数(2>3
)不是算术运算:
import collections
n = 20670005000000
left = collections.deque(str(n))
right = collections.deque()
while len(left) > len(right):
right.appendleft(left.pop())
left = int(''.join(left))
right = int(''.join(right))
在我看来,它们就像子串。要将字符串>子字符串>解析为偶数str(a)[:len(str(a))/2]、str(a)[len(str(a))/2:
、和a=20670005000000
如果数字被转换为字符串,并且其长度是用len
确定的,则认为是算术的,那么还有另一个想法吗
是整数除以2(len(x)//2
)的算法吗?@wwii它试图找到中间点。如果op想要固定长度,它可以硬编码
import collections
n = 20670005000000
left = collections.deque(str(n))
right = collections.deque()
while len(left) > len(right):
right.appendleft(left.pop())
left = int(''.join(left))
right = int(''.join(right))