2016-05-17 61 views
0

欲串像下面在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

使用'itertools.product(s1,s2,s3)'代替 – vaultah

+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

+0

你爲什麼要'''.join(s).replace(「」,「」)'?爲什麼不簡單地'''.join(s)'? – vaultah

+0

vaultah,itertools.product返回元組,如果你確實加入了它,它只會在中間有一個空格。 'AAPL我們BS AAPL我們PL AAPL我們比照 MSFT我們BS MSFT我們PL MSFT我們SS比照 ' – GoGo

+0

運行'爲S:打印(。 '' 加入(S))'。沒有多餘的空間。 – vaultah

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'] 
    >>>