【问题标题】:Python return combinations of a list of ranges?Python返回范围列表的组合?
【发布时间】:2012-06-11 05:57:22
【问题描述】:

我正在根据范围列表返回列表的所有组合。

如果我有:

test_list = [range(0,11,1),range(0,11,2),range(0,11,5)]

我想返回一个列表,其中包含基于范围的所有可能组合。 例如:

output_list[[0,0,5],[0,0,10],[0,2,0],[0,4,0],[0,6,0].......]

但我所能做的就是:

import itertools

test_list = [range(0,11,1),range(0,11,2),range(0,11,5)]
output_list = []
for i in itertools.permutations(test_list):
    if i not in output_list:
        output_list.append(i)

哪个返回每个排列的范围,(又是一个范围列表)?

【问题讨论】:

标签: python list permutation


【解决方案1】:
output_list = list(itertools.product(*test_list))

【讨论】:

  • 嘿,戴夫,感谢您的帮助!现在我不确定的一件事是'*'就行了?这是表示它是一个论点吗?
  • 是的,它将列表解压缩为itertools.product的参数
  • @tijko:* splat 运算符用于将 test_list 解包为一组参数。
  • 这是给tuple/list unpacking的。基本上,它将func([a,b,c]) 变成func(a, b, c)。本质上*[a,b,c] 与a, b, c 相同
  • Cartesian product 是 itertools.product() 的名称。 “笛卡尔”是指无法用谷歌搜索,因为你不知道它叫什么。
猜你喜欢
  • 1970-01-01
  • 2019-06-07
  • 2016-06-01
  • 2018-03-31
  • 1970-01-01
  • 2021-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多