2017-06-04 48 views
2

下面的python代碼爲我提供了給定值的不同組合。將此python代碼的輸出更改爲列表?

import itertools 

iterables = [ [1,2,3,4], [88,99], ['a','b'] ] 
for t in itertools.product(*iterables): 
    print t 

輸出: -

(1, 88, 'a') 
(1, 88, 'b') 
(1, 99, 'a') 
(1, 99, 'b') 
(2, 88, 'a') 

等。

有人可以告訴我如何修改此代碼,使輸出看起來像一個列表;

188a 
188b 
199a 
199b 
288a 
+2

您的輸出看起來不像列表。推測你的意思是輸出不應該看起來像元組,而只是*加入*? –

回答

5

你必須將數字轉換爲字符串,然後再加入結果:

print ''.join(map(str, t)) 

你可能避免,如果你轉換讓您的輸入字符串開頭:

iterables = [['1', '2', '3', '4'], ['88', '99'], ['a', 'b']] 
for t in itertools.product(*iterables): 
    print ''.join(t) 

如果你想要的是打印的值加在一起(而不是與他們做任何事,否則),然後使用print()的功能(通過使用from __future__ import print_function Python 2的功能開關或使用Python 3):

from __future__ import print_function 

iterables = [[1, 2, 3, 4], [88, 99], ['a', 'b']] 
for t in itertools.product(*iterables): 
    print(*t) 
5

你可以試試這個:

iterables = [ [1,2,3,4], [88,99], ['a','b'] ] 

new_list = [''.join(map(str, i)) for i in itertools.product(*iterables)] 
+0

爲什麼地圖中的「列表」?只要做'map(str,i)' – rassar

+0

@rassar:在Python 2中,是的,在Python 3中不是這樣(因爲'str.join()'對於列表輸入工作更快)。 –

相關問題