python - 具有特定迭代顺序的坐标乘积
问题描述
这是一个经常itertools.product
使用的片段:
from itertools import product
arr = [1,2,3]
pairs = list(product(arr, arr))
# pairs = [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]
现在我想让这些点按顺序产生,可以通过以下方式对结果元组进行排序来实现:
sorted(pairs, key=lambda y:max(y))
# [(1, 1), (1, 2), (2, 1), (2, 2), (1, 3), (2, 3), (3, 1), (3, 2), (3, 3)]
有没有办法让我输入这些数字,itertools.product
以便按此顺序生成元组,或者我是否需要在迭代结果后对这些对进行排序itertools.product
?
解决方案
您可能可以使用自己的修改方法一次性实现此目的。
sorted([(x, y) for x in [1, 2, 3] for y in [1, 2, 3]], key=lambda y:max(y))
输出
[(1, 1), (1, 2), (2, 1), (2, 2), (1, 3), (2, 3), (3, 1), (3, 2), ( 3, 3)]
推荐阅读
- php - 带有 php 的 HTML 表单不能使用单个提交按钮。
- ios - 单击 Tableview 单元格时使用哪种方法更新 Rest Api 数据
- jquery - 如何使用jquery遍历表中每一行的隐藏字段值
- r - 我在 typeof(x) 中遇到错误:对象“ParcelArea.m2”。未找到
- python - OpenCV 流式传输 ip 相机总是返回 False
- javascript - 发出请求时 LoopbackJS 和 PostgreSQL 之间的连接出错
- boost - 将自定义提升与 CMake 联系起来
- docker-compose - Docker 撰写错误:构建包含不受支持的选项:'shm_size'
- javascript - 如何使用 NodeJS 将变量传递给其他模块?
- tensorflow - 只学习 Tensorflow 中的非零元素