Python:在列表中每n个字符串添加一个新行

3

我有一个成对列表需要转换为字符串(以便稍后打印),并且我想要在每三个成对列表后插入一个\n。我可以按照下面我的示例代码来完成,但是在Python中是否有更加简洁的方式?

pairs = [[1,2] for i in range(10)] #my data
pairs = [str(p) + ', ' for p in pairs]
for i in reversed(range(0, len(pairs), 3)):
    if i == 0:
        continue
    pairs.insert(i, '\n')
pairs = ''.join(pairs)
pairs = pairs [:-2] #removing the last ', '

这样,我得到了:
>>> print pairs
[1, 2], [1, 2], [1, 2], 
[1, 2], [1, 2], [1, 2], 
[1, 2], [1, 2], [1, 2], 
[1, 2]
1个回答

3
可能需要使用一个助手生成器,从成对的值中产生结果,并在每三个值之后添加 '\n' :
def add_after_every_n(iterator, item_to_add='\n', after_every=3):
    for i, element in enumerate(iterator, 1):  # i counts from 1
         yield element
         if i % after_every == 0:
            yield item_to_add

pairs = [[1,2] for i in range(10)]
pairs = [str(p) + ', ' for p in pairs]
pairs_string = ''.join(add_after_every_n(pairs))
pairs_string = pairs_string[:-2]  # remove last ', '

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接