arr=['one','two','three']
結果一定是這樣的: onetwo,twothree,onethree
Python中數組中字符串的可能組合?
和itertools.permutations不會在這種情況下工作。
我們可以通過簡單地添加for循環並添加它們來實現這一點,這對於小型數組很有效,但對於大型數組需要時間。
我想知道有沒有什麼辦法可以實現(like itertools.permutations)
?
arr=['one','two','three']
結果一定是這樣的: onetwo,twothree,onethree
Python中數組中字符串的可能組合?
和itertools.permutations不會在這種情況下工作。
我們可以通過簡單地添加for循環並添加它們來實現這一點,這對於小型數組很有效,但對於大型數組需要時間。
我想知道有沒有什麼辦法可以實現(like itertools.permutations)
?
也許你想要的是itertools.combinations
?
>>> [''.join(comb) for comb in (itertools.combinations(arr, 2))]
['onetwo', 'onethree', 'twothree']
兩個列表
- 創建等長的列表與其他列表進行比較
- 拉鍊與其他列表
- 把所有的子表一起
- 加入列表
新名單
from itertools import permutations
arr1=['name1','name2']
arr2=['name3','name4']
set(map(lambda x: ''.join(x),reduce(lambda x,y:x+y, [ zip(i,arr1) for i in permutations(arr2,len(arr1)) ])))
output:
set(['name3name1', 'name3name2', 'name4name1', 'name4name2'])
這個工作只適用於長度相等的數組嗎? –
@SrikerCh不,它也適用於不等長 – galaxyan
有什麼辦法可以將這個應用到兩個不同的數組中嗎?我的意思是arr1 = ['name1','name2']; arr2 = ['name3','name4']。輸出應該是'name1name3,name1name4 ,name2name3,name3name4' –
@SrikerCh兩個列表,你需要更多的工作 – galaxyan