【问题标题】:Splitting a Python list into groups of 5 and then printing将 Python 列表分成 5 个组,然后打印
【发布时间】:2014-06-22 02:58:04
【问题描述】:

我有一个如下所示的列表项:

dblist=['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve']

它可能有超过 12 个项目(可能是无限的)。 我想以五人一组的形式打印此列表,并希望我的输出如下所示:

env1: one two three four five
env2: six seven eight nine ten
env3: eleven twelve

我怎样才能做到这一点?

我发现了一些看起来能够完成这项工作的好技巧,但我似乎无法让它与我的代码一起工作。例如,以下似乎可以做我想做的事:

def n_split(iterable, n, fillvalue=None):
    num_extra = len(iterable) % n
    zipped = zip(*[iter(iterable)] * n)
    return zipped if not num_extra else zipped + [iterable[-num_extra:], ]

for ints in n_split(range(1,32), 5):
    print(([str(i) for i in ints]))

具有以下输出:

['1', '2', '3', '4', '5']
['6', '7', '8', '9', '10']
['11', '12', '13', '14', '15']
['16', '17', '18', '19', '20']
['21', '22', '23', '24', '25']
['26', '27', '28', '29', '30']
['31', '32', '33']

我如何使用这种技术以五个一组的方式打印 dblist,如开头所示?

【问题讨论】:

    标签: python list python-2.7 split iterator


    【解决方案1】:

    使用str.join():

    for group in n_split(dblist, 5):
        print ' '.join(group)
    

    您可以添加enumerate() 来添加计数器:

    for count, group in enumerate(n_split(dblist, 5), 1):
        print 'env{}: {}'.format(count, ' '.join(group))
    

    演示:

    >>> def n_split(iterable, n, fillvalue=None):
    ...     num_extra = len(iterable) % n
    ...     zipped = zip(*[iter(iterable)] * n)
    ...     return zipped if not num_extra else zipped + [iterable[-num_extra:], ]
    ... 
    >>> dblist=['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve']
    >>> for group in n_split(dblist, 5):
    ...     print ' '.join(group)
    ... 
    one two three four five
    six seven eight nine ten
    eleven twelve
    >>> for count, group in enumerate(n_split(dblist, 5), 1):
    ...     print 'env{}: {}'.format(count, ' '.join(group))
    ... 
    env1: one two three four five
    env2: six seven eight nine ten
    env3: eleven twelve
    

    【讨论】:

    • 我可以在他的问题中看到另一个问题,他想打印“一”,但他生成的列表有数字 1。
    • @etho201:我添加了一个enumerate() 示例来添加计数器。
    • Martijn,它运行良好!非常感谢!
    【解决方案2】:

    这是你想要的吗?

    dblist=['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve']
    for i in range(0,len(dblist),5):
        print(dblist[i:i+5])
    
    ['one', 'two', 'three', 'four', 'five']
    ['six', 'seven', 'eight', 'nine', 'ten']
    ['eleven', 'twelve']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-19
      • 1970-01-01
      • 2011-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-29
      相关资源
      最近更新 更多