【问题标题】:Python fastest method to group pairs from a list of items从项目列表中对对进行分组的 Python 最快方法
【发布时间】:2013-03-24 23:26:51
【问题描述】:

作为我项目的一部分,我需要将字符分组(唯一)。我在一个列表中有超过 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')]

【问题讨论】:

    标签: python python-2.7 combinations


    【解决方案1】:

    您只需要长度为 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))
    

    【讨论】:

      猜你喜欢
      • 2014-06-13
      • 2019-12-09
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多