Python 不使用numpy或zip查找矩阵的子矩阵
我试图找到一种方法来查找数组X的子矩阵,其中用户提供输入I和j,如下所示:Python 不使用numpy或zip查找矩阵的子矩阵,python,Python,我试图找到一种方法来查找数组X的子矩阵,其中用户提供输入I和j,如下所示: def submatrix(X, i, j): 预期输出应为矩阵X,无第i行和第j列 例如: X = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 子矩阵(X,1,1) 我试图自己解决这个问题,但显然没有成功,也不知道从哪里开始。因此请求帮助。这是怎么回事 def submatrix(X, i, j): return [[elem for x, elem in enu
def submatrix(X, i, j):
预期输出应为矩阵X,无第i行和第j列
例如:
X = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
子矩阵(X,1,1)
我试图自己解决这个问题,但显然没有成功,也不知道从哪里开始。因此请求帮助。这是怎么回事
def submatrix(X, i, j):
return [[elem for x, elem in enumerate(row) if x != i]
for y, row in enumerate(X) if y != j]
X = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
print(submatrix(X, 1, 1))
例子
>>> submatrix([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]], 1, 1)
[[1, 3],
[7, 9]]
>>> submatrix([[1, 2, 3, 4],
[5, 6, 7, 8],
[2, 4, 5, 9],
[9, 6, 4, 3]], 2, 1)
[[1, 3, 4],
[5, 7, 8],
[9, 4, 3]]
对循环使用:
这是解决办法。
首先应该删除该行,然后遍历所有行以删除嵌套列表的列索引。像这样
def submatrix(X, i, j):
del X[i]
for k in range(len(X)):
del X[k][j]
这也可以起作用:
def submatrix(X, i, j):
X = X[:i] + X[i+1:] if i!= len(X) else X[:-1]
X = [i[:j] + i[j+1:] if j!= len(X[0]) else i[:-1] for i in X]
return X
你写代码了吗?你试过在纸上做计划吗?知道从哪里开始吗?欢迎来到StackOverflow,而且。。。在这里申请。StackOverflow是针对特定编程问题的知识库,而不是设计、编码、研究或教程资源。向我们展示您的最佳尝试,以及可以从各个方向移除的东西。这是否回答了您的问题?
X = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
def submatrix(X, i, j):
X=X[:]
del(X[i]) # delete the row
for n in range(len(X)):
del(X[n][j]) # delete the column elements of the rows
return X
X_new = submatrix(X, 1, 1)
[[1, 3], [7, 9]]
def submatrix(X, i, j):
del X[i]
for k in range(len(X)):
del X[k][j]
def submatrix(X, i, j):
X = X[:i] + X[i+1:] if i!= len(X) else X[:-1]
X = [i[:j] + i[j+1:] if j!= len(X[0]) else i[:-1] for i in X]
return X