在列表的每个X元素之后添加特定字符的pythonic方法是什么?

时间:2014-02-16 23:24:14

标签: python list

在我的情况下,我想在列表的每5个字后添加\n。例如:

输入:

['aa', 'bb', 'cc', 'dd', 'ee', 'ff', 'gg', 'hh', 'ii', 'jj', 'kk']

输出:

['aa', 'bb', 'cc', 'dd', 'ee', '\n', 'ff', 'gg', 'hh', 'ii', 'jj', '\n', 'kk']

我的解决方案很直观,但看起来并不简洁和诡计,所以我想听听你的想法。

def get_text(input):
    output = []
    for idx, w in enumerate(input):
        output.append(w)
        if idx !=0 and idx %4 == 0:
            output.append('\n')
    return output

1 个答案:

答案 0 :(得分:0)

鉴于此输入:

lst = ['aa', 'bb', 'cc', 'dd', 'ee', 'ff', 'gg', 'hh', 'ii', 'jj', 'kk']

尝试这个,作为一个单行(假设Python 2.x):

sum([lst[i:i+5]+['\n'] for i in xrange(0, len(lst), 5)], [])[:-1]

或两行,但效率更高:

tmp = (lst[i:i+5]+['\n'] for i in xrange(0, len(lst), 5))
[item for slist in tmp for item in slist][:-1]

无论哪种方式,结果都符合预期:

=> ['aa', 'bb', 'cc', 'dd', 'ee', '\n',
    'ff', 'gg', 'hh', 'ii', 'jj', '\n',
    'kk']