假设我有一个这样的Python列表:
letters = ['a','b','c','d','e','f','g','h','i','j']
我想在每个第n个元素后插入一个“ x”,比方说该列表中的三个字符。结果应为:
letters = ['a','b','c','x','d','e','f','x','g','h','i','x','j']
我知道我可以通过循环和插入来做到这一点。我实际上正在寻找的是Pythonish方式,也许是单线?
我有两个一线客轮。
鉴于:
>>> letters = ['a','b','c','d','e','f','g','h','i','j']
使用enumerate
获得指数,增加'x'
每3 次字母,如:mod(n, 3) == 2
,然后连接成字符串和list()
它。
>>> list(''.join(l + 'x' * (n % 3 == 2) for n, l in enumerate(letters)))
['a', 'b', 'c', 'x', 'd', 'e', 'f', 'x', 'g', 'h', 'i', 'x', 'j']
但是正如@ sancho.s所 指出的,如果任何一个元素具有多个字母,则此方法将无效。
使用嵌套的理解将列表(a)的列表展平,将列表分成3组,'x'
如果列表末尾少于3个,则添加。
>>> [x for y in (letters[i:i+3] + ['x'] * (i < len(letters) - 2) for
i in xrange(0, len(letters), 3)) for x in y]
['a', 'b', 'c', 'x', 'd', 'e', 'f', 'x', 'g', 'h', 'i', 'x', 'j']
(a)[item for subgroup in groups for item in subgroup]
整理锯齿状的列表。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句