more-itertools
   
   有这个吗
   
    grouper
   
   可能对该任务有用的函数。我
   
    replicate it
   
   在这里:
  
  from itertools import zip_longest
def grouper(iterable, n, *, incomplete='fill', fillvalue=None):
    "Collect data into non-overlapping fixed-length chunks or blocks"
    # grouper('ABCDEFG', 3, fillvalue='x') --> ABC DEF Gxx
    # grouper('ABCDEFG', 3, incomplete='strict') --> ABC DEF ValueError
    # grouper('ABCDEFG', 3, incomplete='ignore') --> ABC DEF
    args = [iter(iterable)] * n
    if incomplete == 'fill':
        return zip_longest(*args, fillvalue=fillvalue)
    if incomplete == 'strict':
        return zip(*args, strict=True)
    if incomplete == 'ignore':
        return zip(*args)
    else:
        raise ValueError('Expected fill, strict, or ignore')
  
   此功能与
   
    zip
   
   (
   
    documentation
   
   )以如下所示的方式返回元组的迭代器,其中元组的第一个元素是来自
   
    b
   
   元组的第二个元素是一个由三个元素组成的元组,这些元素取自
   
    a
   
   .对于本例,返回的迭代器
   
    拉链
   
   链接
   
    1.9
   
   关于
   
    A.
   
   ,
   
    1.7
   
   接下来的三个要素
   
    A.
   
   等等
  
  a = [902920,28393892,93993992,93938939929,929393993928,38982933939393, 883383938393]
b = [1.9, 1.7, 1.6]
c = zip(b, grouper(a, 3))
for item in c:
    print(item)
  
   
    输出
   
  
  (1.9, (902920, 28393892, 93993992))
(1.7, (93938939929, 929393993928, 38982933939393))
(1.6, (883383938393, None, None))
  
   这个
   
    石斑鱼
   
   函数提供了额外的功能。默认情况下,如果长文档中没有足够的元素
   
    A.
   
   列表要填充一个3元组,空元素将被
   
    None
   
   .所以你可以设定
   
    fillvalue
   
   您是否希望获得除以下内容以外的值
   
    没有一个
   
   或者,您甚至可以声明,您不希望像本例中那样使用不完整的元组
  
  c = zip(b, grouper(a, 3, incomplete = 'ignore'))
for item in c:
    print(item)
  
   
    输出
   
  
  (1.9, (902920, 28393892, 93993992))
(1.7, (93938939929, 929393993928, 38982933939393))