讓說,我有表結合列表元素的列表
[ ['B','2'] , ['o','0'], ['y']]
的名單,我想清單合併爲這樣的事情而無需使用iteratool
["Boy","B0y","2oy","20y"]
我可以」不要使用itertool,因爲我必須使用python 2.5。
讓說,我有表結合列表元素的列表
[ ['B','2'] , ['o','0'], ['y']]
的名單,我想清單合併爲這樣的事情而無需使用iteratool
["Boy","B0y","2oy","20y"]
我可以」不要使用itertool,因爲我必須使用python 2.5。
itertools.product()
做你想要的。
>>> [''.join(x) for x in itertools.product(*[['B', '2'], ['o', '0'], ['y']])]
['Boy', 'B0y', '2oy', '20y']
如果我不能使用iteratool – user1968057 2013-02-22 22:30:51
那麼請你解釋爲什麼是這種情況。或者你只需點擊我答案中的鏈接,並複製並粘貼'itertools.product'實現並使用那個... – ThiefMaster 2013-02-22 22:38:03
我想知道是否還有其他方法可以在不使用itertool的情況下執行此操作。我知道可以使用itertools來實現 – user1968057 2013-02-22 22:39:21
如果你不想使用itertools,這個列表理解產生的輸出:
>>> LoL=[['B','2'], ['o','0'], ['y']]
>>> [a+b+c for a in LoL[0] for b in LoL[1] for c in LoL[2]]
['Boy', 'B0y', '2oy', '20y']
這就是一個更緊湊的版本:
LoL=[['B','2'], ['o','0'], ['y']]
r=[]
for a in LoL[0]:
for b in LoL[1]:
for c in LoL[2]:
r.append(a+b+c)
print r
在這兩種情況下, ,你正在生產一個cartesian product這是更好,更靈活地完成與itertools.product()(除非你只是好奇如何做到這一點...)
如果您不想使用itertools,請查看itertools函數的等效代碼,並複製並粘貼它(錯誤!)或重新實現它(同樣不好,它會變慢!)。 -1來添加一個沒有道理的要求,而不解釋原因。 – ThiefMaster 2013-02-22 22:17:30
_「我必須使用python 2.5」_ - \ *標籤爲python-2.7 \ * – Eric 2013-02-22 22:43:19
['itertools'](http://docs.python.org/2/library/itertools.html):_「New在版本** 2.3 **中。「_。儘管['itertools.product'](http://docs.python.org/2/library/itertools.html#itertools.product)是2.6。 – Eric 2013-02-22 22:44:47