我有以下要求.
我有一个列表,说有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