如何在 Python 中创建有序对函数?
How create a ordered pair function in Python?
我来自 Matlab,我想编写一个函数来创建有序对函数。
示例:
数组1=[2,5,7];
Array2 = [6,2];
PairOrdered = [ 2,6 ; 2,2; 5,6; 5,2; 7,6; 7,2];
在 Matlab 中我使用这个逻辑:
LA=length(A);
LB=length(B);
LT= LA*LB;
M = zeros(LT,2);
for i = 1:LA
for j =1:LB
M((i-1)*LB+j , : ) = [A(i),B(j)];
end
end
如您所见,我用两个数组的长度定义了一对有序矩阵。在 Python 中,我使用相同的逻辑,如下所示:
A = [1,2,3,4];
B = [5,6,7];
LA = len(A)
LB = len(B)
Maux = [];
for i in A:
for j in B:
Maux[(i-1)*LB+j , j]
系统是这样说的:
Traceback (most recent call last):
File "C:\Users---\Desktop\Code1\ParOrde.py", line 17, in
Maux[(i-1)*LB+j , j]
TypeError: list indices must be integers or slices, not tuple
如何创建动态矩阵类型的整数?或者我该如何解决这个问题?
您正在寻找的东西是 itertools.product()
为您提供这两个列表的乘积:
import itertools
Array1 = [2,5,7]
Array2 = [6,2]
Array1_Array2 = list(itertools.product(Array1, Array2))
print(Array1_Array2)
如果你热衷于自己做,你可以使用理解:
Array1 = [2,5,7]
Array2 = [6,2]
Array1_Array2 = [(a, b) for a in Array1 for b in Array2]
print(Array1_Array2)
或通过传统的 for
循环:
Array1 = [2,5,7]
Array2 = [6,2]
Array1_Array2 = []
for a in Array1:
for b in Array2:
Array1_Array2.append((a,b))
print(Array1_Array2)
这三个都会给你一个元组列表:
[(2, 6), (2, 2), (5, 6), (5, 2), (7, 6), (7, 2)]
尽管如果您愿意,将元组本身转换为列表是微不足道的。
如果你打算做一些类似“矩阵”的事情,你可能想看看 numpy
包。
作为函数实现,它可能看起来像:
def OrderPair(A,B):
return [[a, b] for a in A for b in B]
A1 = [2,5,7]
A2 = [6,2]
S = OrderPair(A1, A2)
print(S)
给你:
[[2, 6], [2, 2], [5, 6], [5, 2], [7, 6], [7, 2]]
我来自 Matlab,我想编写一个函数来创建有序对函数。
示例:
数组1=[2,5,7]; Array2 = [6,2];
PairOrdered = [ 2,6 ; 2,2; 5,6; 5,2; 7,6; 7,2];
在 Matlab 中我使用这个逻辑:
LA=length(A);
LB=length(B);
LT= LA*LB;
M = zeros(LT,2);
for i = 1:LA
for j =1:LB
M((i-1)*LB+j , : ) = [A(i),B(j)];
end
end
如您所见,我用两个数组的长度定义了一对有序矩阵。在 Python 中,我使用相同的逻辑,如下所示:
A = [1,2,3,4];
B = [5,6,7];
LA = len(A)
LB = len(B)
Maux = [];
for i in A:
for j in B:
Maux[(i-1)*LB+j , j]
系统是这样说的:
Traceback (most recent call last): File "C:\Users---\Desktop\Code1\ParOrde.py", line 17, in Maux[(i-1)*LB+j , j] TypeError: list indices must be integers or slices, not tuple
如何创建动态矩阵类型的整数?或者我该如何解决这个问题?
您正在寻找的东西是 itertools.product()
为您提供这两个列表的乘积:
import itertools
Array1 = [2,5,7]
Array2 = [6,2]
Array1_Array2 = list(itertools.product(Array1, Array2))
print(Array1_Array2)
如果你热衷于自己做,你可以使用理解:
Array1 = [2,5,7]
Array2 = [6,2]
Array1_Array2 = [(a, b) for a in Array1 for b in Array2]
print(Array1_Array2)
或通过传统的 for
循环:
Array1 = [2,5,7]
Array2 = [6,2]
Array1_Array2 = []
for a in Array1:
for b in Array2:
Array1_Array2.append((a,b))
print(Array1_Array2)
这三个都会给你一个元组列表:
[(2, 6), (2, 2), (5, 6), (5, 2), (7, 6), (7, 2)]
尽管如果您愿意,将元组本身转换为列表是微不足道的。
如果你打算做一些类似“矩阵”的事情,你可能想看看 numpy
包。
作为函数实现,它可能看起来像:
def OrderPair(A,B):
return [[a, b] for a in A for b in B]
A1 = [2,5,7]
A2 = [6,2]
S = OrderPair(A1, A2)
print(S)
给你:
[[2, 6], [2, 2], [5, 6], [5, 2], [7, 6], [7, 2]]