检查矩阵是否为正方形?(Python)
我想测试一个[[5,6],[7,8]]的2x2矩阵,看看它是否是正方形 我运行我的代码,我应该得到正确的,但我得到错误的,而不是检查矩阵是否为正方形?(Python),python,matrix,Python,Matrix,我想测试一个[[5,6],[7,8]]的2x2矩阵,看看它是否是正方形 我运行我的代码,我应该得到正确的,但我得到错误的,而不是 def square(sq): for element in sq: if element: return False return True 如果要检查矩阵是否为NxN,可以使用: def isSquare (m): return all (len (row) == len (m) for
def square(sq):
for element in sq:
if element:
return False
return True
如果要检查矩阵是否为NxN,可以使用:
def isSquare (m): return all (len (row) == len (m) for row in m)
正如您在评论中所说:如果所有行的长度等于行数。如果要检查矩阵是否为NxN,可以使用:
def isSquare (m): return all (len (row) == len (m) for row in m)
正如您在评论中所说:如果所有行的长度等于行数。您将列表作为参数传递。你举的例子是[[5,6],[7,8]] 让我们来看看您的代码如何处理这个输入
for element in sq:
if element:
return False
return True
让我们从for循环开始:
for element in sq:
这将在列表中循环,因此元素的第一次迭代是[5,6],下一次迭代是[7,8]
代码要做的下一件事是检查元素是否为True。如果列表不是空的,则该列表为真。因此,在第一次迭代中,代码返回False
代码将返回True的示例输入为[[],[]
要检查矩阵是否为正方形,需要查看所有列表维度是否相同。大致如下:
def square(sq):
rows = len(sq)
for row in sq:
if len(row) != rows:
return False
return True
将列表列表作为参数传递。你举的例子是[[5,6],[7,8]] 让我们来看看您的代码如何处理这个输入
for element in sq:
if element:
return False
return True
让我们从for循环开始:
for element in sq:
这将在列表中循环,因此元素的第一次迭代是[5,6],下一次迭代是[7,8]
代码要做的下一件事是检查元素是否为True。如果列表不是空的,则该列表为真。因此,在第一次迭代中,代码返回False
代码将返回True的示例输入为[[],[]
要检查矩阵是否为正方形,需要查看所有列表维度是否相同。大致如下:
def square(sq):
rows = len(sq)
for row in sq:
if len(row) != rows:
return False
return True
如果矩阵表示二维空间中的两个坐标,则示例为正方形。您可以通过测试x和y值的差值是否相等来确定这一点。代码可能是:
def square(sq):
delta_x = sq[1][0] - sq[0][0]
delta_y = sq[1][1] - sq[0][1]
return delta_x == delta_y
如果矩阵表示二维空间中的两个坐标,则示例为正方形。您可以通过测试x和y值的差值是否相等来确定这一点。代码可能是:
def square(sq):
delta_x = sq[1][0] - sq[0][0]
delta_y = sq[1][1] - sq[0][1]
return delta_x == delta_y
这也应该起作用
A是带有矩阵的列表
if not A:
return True
m = len(A)
n = len(A[0])
if m == n:
return True
else:
return False
这也应该起作用
A是带有矩阵的列表
if not A:
return True
m = len(A)
n = len(A[0])
if m == n:
return True
else:
return False
给定的
m
是一个numpy
矩阵,您已导入numpy
def square(m):
return m.shape[0] == m.shape[1]
给定的
m
是一个numpy
矩阵,您已导入numpy
def square(m):
return m.shape[0] == m.shape[1]
你的代码应该做什么?什么时候矩阵是正方形?2x2矩阵定义为正方形,因为行数等于列数。@Hyperboreus当行数和列数相同时当然不是,只要你给它一个有效的东西,并且在任何无效元素之前有一个有效元素,它将返回false。您的代码应该做什么?什么时候矩阵是正方形?2x2矩阵定义为正方形,因为行数等于列数。@Hyperboreus当行数和列数相同时,当然不是,只要你给它一个有效的东西,并且在任何无效元素之前有一个有效元素,它就会返回false。当然最好将
len(m)
存储在一个变量中,这样你就不必在每次迭代中都计算它了。@AlexThornton是每次调用时真正计算的列表的len(m)
?我以为这是在某个地方记下来的。奇怪的问题,像这样做一行函数与lambda函数相比,有什么好处呢?当然,存储len(m)会更好
在变量中,这样您就不必在每次迭代中都计算它。@AlexThornton是len(m)
在每次调用时真正计算的列表吗?我以为这是在某个地方记下来的。奇怪的问题,像这样做一行函数与lambda函数相比有什么好处呢?isSquare=lambda m:all(len(row)==len(m)表示m中的行)
?@NateMara几乎没有,但lambda haters会鞭笞你。当然函数体应该返回m.shape[0]==m.shape[1]
当然函数体应该是返回m.shape[0]==m.shape[1]