我有一个对列表转换为字符串(供以后打印),我想插入一个\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]
答案 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 ', '