将字符串与循环组合

时间:2016-05-17 20:37:26

标签: python string itertools

我想在python 2.7.11中组合如下所示的字符串 输入:

s1=['aapl','msft']
s2=['us']
s3=['bs','pl','cf']

期望的输出:

s0=['aaplusbs','aapluspl','aapluscf','msftusbs','msftuspl','msftuscf']

我尝试过使用itertools和itertools.cycle。这是最近的一段代码,但仍未提供所需的输出。

in>> ' '.join('%s%s%s' % i for i in zip(s1,itertools.cycle(s2),itertools.cycle(s3))).split()
out>> ['aaplusbs', 'msftuspl']

提前感谢。

2 个答案:

答案 0 :(得分:0)

@Siraj,你需要做一些额外的事情,以便在itertools.product(s1,s2,s3)之上得到你想要的东西,如下所示。

import itertools

s1=['aapl','msft']
s2=['us']
s3=['bs','pl','cf']

ss = itertools.product(s1,s2,s3)
for s in ss:
    print(' '.join(s).replace(" ",""))

产生如下输出:

aaplusbs
aapluspl
aapluscf
msftusbs
msftuspl
msftuscf

对于那些想要了解更多像我这样的itertools的人,请参考https://docs.python.org/2/library/itertools.html#itertools.product

答案 1 :(得分:0)

这就是我能做的事情

    >>> s1=['aapl','msft']
    >>> s2=['us']
    >>> s3=['bs','pl','cf']
    >>> s0=[]
    >>> 
    >>> for i in s1:
            for j in s2:
                for k in s3:
                    print i+j+k
                    s0.append(i+j+k)


    aaplusbs
    aapluspl
    aapluscf
    msftusbs
    msftuspl
    msftuscf
    >>> s0
    ['aaplusbs', 'aapluspl', 'aapluscf', 'msftusbs', 'msftuspl', 'msftuscf']
    >>>