繁体   English   中英

对于给定的值范围,生成给定大小的所有可能的元组组合

[英]Generate all possible tuples combinations of given size for given range of values

假设我有3个参数:范围,n元素元组的大小(实际上也可能是列表)和可能的组合(无重复)。 我想从范围中获取所有可能的数字组合。

因此,例如:

  • 范围a..b = 1..5
  • 元组的大小s = 2
  • 没有重复

    结果将是:

    (1,1)(1,2)(1,3)(1,4)(1,5)(2,1)(2,2)(2,3)(2,4)(2,5) (3,1)(3,2)(3,3)(3,4)(3,5)(4,1)(4,2)(4,3)(4,4)(4,5) (5,1)(5,2)(5,3)(5,4)(5,5)

有了重复,当然会有更多的元组。

显然,它可以迭代地完成,但是实现此任务的更加Python化和优雅的方式(也许是其他工具)将是什么?

重复:

>>> from itertools import product
>>> list(product(range(1, 6), repeat=2))
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (5, 1), (5, 2), (5, 3), (5, 4), (5, 5)]

无重复:

>>> from itertools import permutations
>>> list(permutations(range(1, 6), 2))
[(1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 3), (2, 4), (2, 5), (3, 1), (3, 2), (3, 4), (3, 5), (4, 1), (4, 2), (4, 3), (4, 5), (5, 1), (5, 2), (5, 3), (5, 4)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM