使用python将大量数据转换为更小的一系列数字
我有一个很大的数字可以说约百位数。 我想把这个大数字分成连续的5位数字并找出这5位数字的乘积。 例如,我的第一个5位数字是73167.我需要检查73167中各个数字的乘积等等。
样本编号如下:
73167176531330624919225119674426574742355349194934969835203127745063262395783180169848018694788518438586156078911294949545950173795833195285320880551112540698747158523863050715693290963295227443043557
我有一个问题,从大数中排除小数字。
我的基本起始码是:
b = 73167176531330624919225119674426574742355349194934969835203127745063262395783180169848018694788518438586156078911294949545950173795833195285320880551112540698747158523863050715693290963295227443043557
jd = str(b)
for ch in jd:
number = ch
print (number)
任何帮助,高度赞赏。
编辑:我相信grouper
是在这个解决方案矫枉过正,通过@Haidro看解决方案https://stackoverflow.com/a/16078696/1219006
使用来自itertools
的石斑鱼配方
我假设b
是一个字符串,因为如果把一个数字做得很大,那将是一个疯狂的浪费。
from itertools import izip_longest
from operator import mul
def grouper(n, iterable, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
for g in grouper(5, b, fillvalue=''):
# And to work out the product of the digits
num = ''.join(g)
prod = reduce(mul, map(int, num))
尝试这个:
from operator import mul
def chunker(seq, size):
return (seq[pos:pos + size] for pos in xrange(0, len(seq), size))
for i in chunker(str(myint),5): # Where myint is that big number
reduce(mul, map(int, i))
一行为你:
import re; re.findall("d{5}", number)
链接地址: http://www.djcxy.com/p/55127.html
上一篇: Subset a large number into smaller series of numbers using python