【发布时间】:2015-10-14 05:23:46
【问题描述】:
如何解压integer (1111),使其返回包含列表的三元素元组?元组的第一个元素应该是一个包含前导数字的列表。第二个应该是跟随前导数字并在小数点之前的数字列表。第三个元素应该跟在小数点之后。
示例 1:
>>> unpackNumber ( 1111 )
( [ 1] , [1 , 1, 1 ], [ ] )
示例 2:
>>>unpackNumber(2.)
【问题讨论】:
如何解压integer (1111),使其返回包含列表的三元素元组?元组的第一个元素应该是一个包含前导数字的列表。第二个应该是跟随前导数字并在小数点之前的数字列表。第三个元素应该跟在小数点之后。
示例 1:
>>> unpackNumber ( 1111 )
( [ 1] , [1 , 1, 1 ], [ ] )
示例 2:
>>>unpackNumber(2.)
【问题讨论】:
有多种方法可以解决这个问题,但我想不出它与二进制搜索有什么关系。
使用正则表达式是一种选择:
>>> import re
>>> re.findall(r'(^\d)(\d*)\.?(\d*)$', '123.4')
[('1', '23', '4')]
>>> re.findall(r'(^\d)(\d*)\.?(\d*)$', '123.')
[('1', '23', '')]
将元素进一步转换为整数列表相对简单,例如:
>>> [int(d) for d in list('23')]
[2, 3]
【讨论】: