2013-03-24 48 views
1

作为我的项目的一部分,我需要将字符组合成对(唯一)。我在列表中有超过1000个这些字符。从这些角色列表中创建唯一对的最快和最佳方法是什么?我目前正在使用itertools,我的代码似乎表现得相当糟糕。Python最快的方法从项目列表中分组

我的代码使用itertools:

import itertools 

characters = ['A', 'B', 'C', 'D', 'E'] 
relations = [] 
for character in range(len(characters) + 1): 
    for combination in itertools.combinations(characters, character): 
     if len(combination) == 2: 
      relations.append(combination) 
print relations 

预期输出:

[('A', 'B'), ('A', 'C'), ('A', 'D'), ('A', 'E'), ('B', 'C'), 
('B', 'D'), ('B', 'E'), ('C', 'D'), ('C', 'E'), ('D', 'E')] 

回答

5

所有你需要的是长度为2的组合?

In [48]: characters = ['A', 'B', 'C', 'D', 'E'] 

In [50]: list(itertools.combinations(characters, 2)) 
Out[50]: 
[('A', 'B'), 
('A', 'C'), 
('A', 'D'), 
('A', 'E'), 
('B', 'C'), 
('B', 'D'), 
('B', 'E'), 
('C', 'D'), 
('C', 'E'), 
('D', 'E')] 

您还生成长度为3的组合,以LEN(字符)和投掷他们全部。

characters = ['A', 'B', 'C', 'D', 'E'] 
relations = list(itertools.combinations(characters, 2)) 
相关问题