【问题标题】:Remove particular combinations from itertools.combinations从 itertools.combinations 中删除特定组合
【发布时间】:2015-06-30 06:53:15
【问题描述】:

假设我们有一对元组,其中元组可以有不同的长度。我们称它们为元组t1t2

t1 = ('A', 'B', 'C')
t2 = ('d', 'e')

现在我使用 itertools 从两个元组中计算长度为 2 的所有组合:

import itertools
tuple(itertools.combinations(t1 + t2, 2))

Itertools 生成器产生所有可能的组合,但我只需要那些出现在元组之间的组合;预期的输出是

(('A', 'd'), ('A', 'e'), ('B', 'd'), ('B', 'e'), ('C', 'd'), ('C', 'e'))

我想知道删除不需要的组合的最佳方法是什么。

【问题讨论】:

    标签: python


    【解决方案1】:

    你需要itertools.product

    >>> t1 = ('A', 'B', 'C')
    >>> t2 = ('d', 'e')
    >>> from itertools import product
    >>> 
    >>> list(product(t1,t2))
    [('A', 'd'), ('A', 'e'), ('B', 'd'), ('B', 'e'), ('C', 'd'), ('C', 'e')]
    

    如果您正在处理短元组,您可以简单地使用列表理解来完成这项工作:

    >>> [(i,j) for i in t1 for j in t2]
    [('A', 'd'), ('A', 'e'), ('B', 'd'), ('B', 'e'), ('C', 'd'), ('C', 'e')]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-01
      • 2012-09-10
      • 2020-10-24
      • 1970-01-01
      • 1970-01-01
      • 2019-06-03
      • 1970-01-01
      相关资源
      最近更新 更多