Python最快的方法,用于从项列表中对组进行分组

时间:2013-03-24 23:26:51

标签: python python-2.7 combinations

作为我项目的一部分,我需要将字符分组(唯一)。我在列表中有超过1000个这样的字符。从这些字符列表中创建唯一对的最快和优化方法是什么。我目前正在使用itertools,我的代码似乎执行得非常糟糕。

我的代码使用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')]

1 个答案:

答案 0 :(得分: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))