python - 如何生成仅包含有限给定重复元素的组合?
问题描述
给定以下列表:
my_list = [-1, 0, 2, 0]
我怎样才能得到所有的三元组组合?例如[[-1, 0, 2], [-1, 0, 0], [0, 2, 0], ...]
我尝试过使用itertools.combinations
anditertools.combinations_with_replacement
函数,但它们都没有做我想做的事。
first = itertools.combinations(my_list, 3)
second = itertools.combinations_with_replacement(my_list, 3)
我将两个变量的第二个参数设置为 3,因为我想要三胞胎。但是,first
上面的变量(使用itertools.combinations
)不允许任何重复的元素,因此[-1, 0, 0]
不会生成所需的三元组之一。
然后,second
一个(使用itertools.combinations_with_replacement
)重复太多。也就是说,生成的元素之一是[0, 0, 0]
不应该生成的,因为 中只有两个 0 my_list
。
任何线索将不胜感激
解决方案
[
itertools.combinations
] 不允许任何重复的元素
是的,但两个零是独立的元素。
简单地测试它表明(-1, 0, 0)
存在:
import itertools
my_list = [-1, 0, 2, 0]
first = itertools.combinations(my_list, 3)
print((-1, 0, 0) in first)
first = itertools.combinations(my_list, 3)
print(*first)
输出:
True
(-1, 0, 2) (-1, 0, 0) (-1, 2, 0) (0, 2, 0)
推荐阅读
- firebase - Flutter Google SignIn 未显示
- apache-kafka - 代理不可用后自动重启 Quarkus 微服务
- javascript - 如何为 React.js 中动态生成的页面生成站点地图
- c - 为什么在这个程序中 return n 是可选的?
- python - JSON Post 正文未按预期解析
- javascript - Webpack:404 图像未找到(已解决)
- sql - IIF 函数返回不正确的计算值 - SQL Server
- javascript - 从数据键值中删除字符
- arrays - 竞争程序员手册,最长递增子序列 - 需要解释
- python-3.x - 从 excel 文件创建数据框