Python代码将找到由特定字母组成的2个单词串联。信件必须只使用一次

时间:2013-02-02 08:53:26

标签: python list list-comprehension

如果我在变量字中有一个单词列表,在变量字母中有一个字母列表,我怎样才能找到可以用字母中的字母组成的2个单词的所有连接。字母中的字母每个只能使用一次;但你可以多次列出同一个字母。必须使用所有字母。我想用Python做到这一点。

我有用于从字母中查找单个单词的代码,但是如何更改此代码以找到连接的2个单词:

letters = ['A', 'E', 'H', 'R', 'T']
words = ['DUMMY', 'EARTH']

[w for w in words if sorted(w) == letters]

所以给出

letters = ['A', 'D', 'E', 'H', 'M', 'M', 'R', 'T', 'U', 'Y']

我想找到

'DUMMYEARTH'

2 个答案:

答案 0 :(得分:1)

如果您只需要配对:

from itertools import combinations

words = ['DUMMY', 'EARTH']
letters = ['A', 'D', 'E', 'H', 'M', 'M', 'R', 'T', 'U', 'Y']

[w for w in (''.join(c) for c in combinations(words,2)) 
                               if sorted(w) == letters]
# ['DUMMYEARTH']

这适用于所有组合:

[w for w in (''.join(c) for i in xrange(len(words)+1) 
                      for c in combinations(words,i)) 
                              if sorted(w) == letters]
# ['DUMMYEARTH']

答案 1 :(得分:-1)

使用+运算符连接单词,然后进行检查。