Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查矩阵是否为正方形?(Python)_Python_Matrix - Fatal编程技术网

检查矩阵是否为正方形?(Python)

检查矩阵是否为正方形?(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

我想测试一个[[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 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]