python – 将列表的元素与所有可能的分隔符组合在一起

我有以下要求.

我有一个列表,说有3个元素[X,Y,2]

我想要做的是在每个元素之间生成带有分隔符(比如说“ – ”)的字符串.应保留数组中元素的顺序.

所以输出将是:

'XY2'
'X-Y-2'
'X-Y2'
'XY-2'

在python中有一种优雅的方式吗?

最佳答案

>>> import itertools
>>> for c in itertools.product(' -', repeat=2): print ('X%sY%s2' % c).replace(' ', '')
XY2
XY-2
X-Y2
X-Y-2

或者,来自python列表的元素:

import itertools
a = ['X', 'Y', 2]
for c in itertools.product(' -', repeat=2):
    print ('%s%s%s%s%s' % (a[0],c[0],a[1],c[1],a[2])).replace(' ', '')

或者,风格略有不同:

import itertools
a = ['X', 'Y', '2']
for c in itertools.product(' -', repeat=2):
    print ( '%s'.join(a) % c ).replace(' ', '')

要将输出捕获到列表:

import itertools
a = ['X', 'Y', '2']
output = []
for c in itertools.product(' -', repeat=len(a)-1):
   output.append( ('%s'.join(a) % c).replace(' ', '') )
print 'output=', output
点赞