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

时间:2013-12-18 09:54:35

标签: python string

我有一个列表转换为字符串(供以后打印),我想插入一个\n每三对。我可以在下面的示例代码中进行操作,但在Python中是否有更多 compact 方式?

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 个答案:

答案 0 :(得分: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 ', '