我对python很陌生,一直在尝试编写一个小代码,但还没有成功,所以我决定在这里发表文章。
我有一个python列表,如下所示:

['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']

我想在这个列表中插入一个分隔符“x”问题是输出应该如下所示:
['a', 'x', 'b', 'xx', 'c', 'xxx', 'd', 'xxxx']

这里是一个x的代码:
zz = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
print(zz)
print('letters with delimiters as x')
i = 1
while i < len(zz):
    zz.insert(i, 'x')
    i += 2
print(zz)

最佳答案

我的第一个想法是使用所有的火箭筒:
使用zip交叉排列您的列表和另一个由x,xx,xxx使用字符串乘法完成(使用生成器理解避免创建“硬”列表,无需)
使用itertools.chain将获得的元组展平
像这样(第一次尝试,有效,但还有改进的余地):

>>> lst = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
>>> list(itertools.chain.from_iterable(zip(lst,("x"*(i+1) for i in range(len(lst))))))

使用enumerate和不使用zip的变体,稍好一点(range(len(lst))通常是一个大的无BTW):
>>> list(itertools.chain.from_iterable((v,"x"*i) for i,v in enumerate(lst,1)))

避免chain,使用listcomp压平元组(可能是最明智的选择,使用的字母比符号多,这是肯定的):
>>> [item for elts in ((v,"x"*i) for i,v in enumerate(lst,1)) for item in elts]

全部3个打印:
['a',
 'x',
 'b',
 'xx',
 'c',
 'xxx',
 'd',
 'xxxx',
 'e',
 'xxxxx',
 'f',
 'xxxxxx',
 'g',
 'xxxxxxx',
 'h',
 'xxxxxxxx']

08-25 12:54
查看更多