python中数组中字符串的可能组合?

时间:2016-07-22 17:31:28

标签: python arrays python-3.x python-3.4 itertools

arr=['one','two','three']

结果必须如下: onetwo,twothree,onethree

  

itertools.permutations在这种情况下不起作用。

我们可以通过简单地添加for循环并附加它们来实现这一点,这适用于小型数组但需要时间来处理大型数组。
我想知道有没有办法(like itertools.permutations)可以实现这个目标?

2 个答案:

答案 0 :(得分:4)

也许你想要的是itertools.combinations

>>> [''.join(comb) for comb in (itertools.combinations(arr, 2))]
['onetwo', 'onethree', 'twothree']

答案 1 :(得分:1)

  

两个列表

     
      
  • 创建一个长度与其他列表相同的列表
  •   
  • 拉链新列表与其他列表
  •   
  • 将所有子列表放在一起
  •   
  • 加入列表
  •   
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'])