Python 不使用numpy或zip查找矩阵的子矩阵

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

我试图找到一种方法来查找数组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 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