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