将Python列表分成5个一组并打印

0 投票
2 回答
1946 浏览
提问于 2025-04-18 10:39

我有一个列表项,长得像这样:

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分成五个一组打印,像一开始那样?

2 个回答

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']
3

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

撰写回答