arrays - 组合二维数组(矩阵)元素
问题描述
我有一个像[[1,2,3], [4,5,6], [7,8,9]]这样的二维数组。
所以我需要将每个元素与所有其他元素组合形成另一个子列表并获得一个像[[1,4,7], [1,4,8], [1,4,9], [2,4,7 ], [2,4,8], [2,4,9], [3,4,7], [3,4,8], [3,4,9], [1,5,7], [...], [...], ... etc]在Python3中。
!子列表的数量可能不同。
我对循环使用了不同的方法,但没有任何方法可以正常工作。不使用 itertools怎么办?提前致谢!
我尝试迭代数组,但我无法完全体现这个想法。
arr = [[1,2,3], [4,5,6], [7,8,9]]
total = []
for i in arr[0]:
for index, j in enumerate(arr[1:]):
res = [i]
for indx, n in enumerate(j):
res.append(n)
for m in arr[index+1]:
res.append(m)
break
print(res)
而我只有这个
[1, 4, 4, 5, 4, 6, 4]
[1, 7, 7, 8, 7, 9, 7]
[2, 4, 4, 5, 4, 6, 4]
[2, 7, 7, 8, 7, 9, 7]
[3, 4, 4, 5, 4, 6, 4]
[3, 7, 7, 8, 7, 9, 7] .. 这是不正确的。
解决方案
只需使用来自 itertools 的笛卡尔积
from itertools import product
arr = [[1,2,3], [4,5,6], [7,8,9]]
prod = product(*arr)
print(list(prod))
推荐阅读
- ms-access - 在 ms 访问表单中突出显示richtextbox 中字符串的一些单词
- r - 错误:无法在 R Shiny Dashboard 中启动 png() 设备
- r - 在 RMarkdown 中循环打印 ggplot2 和 lm 对象
- php - 返回其子类的新实例的方法
- python - 在相同数量的 bin 中绘制相同数量的点并平均 bin 值
- django - Django Haystack中的date_facet没有按日期分面
- html - VBA 到 VBS - iframe 权限被拒绝
- javascript - 我可以对外部脚本加载的 HTML 进行 dom 操作吗?
- c++ - 如何将不同模板参数值但类型相同的值放入此类型的变量中?C++
- c# - 检查数据库中是否已经存在记录