使用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

下一篇: Python: print specific character from string