【问题标题】:Printing elements of a list splitted on new lines every N items [duplicate]打印列表的元素每隔 N 项在新行上拆分 [重复]
【发布时间】:2013-09-09 19:54:30
【问题描述】:

我需要在每个 N 元素的多行上打印我的列表,而不是将原始列表拆分为更小的列表。

例如,N = 3

鉴于此:

MY_LIST = [ 'A', 'B', 'C', 'D', 'E', 'F']

我想让 python 打印这个:

A B C

D E F

感谢您的帮助

【问题讨论】:

    标签: python list printing split


    【解决方案1】:

    试试这个:

    '\n'.join([' '.join(i) for i in zip(*[iter(MY_LIST)]*N)])

    例子:

    >>> MY_LIST = [ 'A', 'B', 'C', 'D', 'E', 'F']
    >>> N=3
    >>> '\n'.join([' '.join(i) for i in zip(*[iter(MY_LIST)]*N)])
    'A B C\nD E F'
    

    【讨论】:

    • 当心len(MY_LIST) %3 != 0...
    【解决方案2】:

    您可以使用itertools.islice 和生成器函数:

    >>> import math
    >>> from itertools import islice
    def solve(lis, n):                                              
        it = iter(lis)
        le = float(len(lis))
        for _ in xrange(int(math.ceil(le/n))):
            yield " ".join(islice(it, n))
    
    >>> for x in solve([ 'A', 'B', 'C', 'D', 'E', 'F'], 3):
    ...     print x
    ...     
    A B C
    D E F
    

    使用py3.x的print函数:

    >>> from __future__ import print_function
    >>> print(*solve([ 'A', 'B', 'C', 'D', 'E', 'F'], 3), sep='\n')
    A B C
    D E F
    >>> print(*solve([ 'A', 'B', 'C', 'D', 'E', 'F', 'G'], 3), sep='\n')
    A B C
    D E F
    G
    

    【讨论】:

      【解决方案3】:
      >>> for x in (MY_LIST[i:i + N] for i in xrange(0, len(MY_LIST), N)):
      ...    print " ".join(x)
      A B C
      D E F
      

      【讨论】:

        猜你喜欢
        • 2018-05-19
        • 1970-01-01
        • 2018-11-09
        • 2016-07-30
        • 2018-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多