检查矩阵是否是正方形? (蟒蛇)

时间:2014-04-04 18:47:20

标签: python matrix

我想测试[[5,6],[7,8]]的2x2矩阵,看它是否是正方形。

我运行我的代码并且我应该变为True,但我得到了False而不是......

 def square(sq):
     for element in sq:
         if element:
             return False
         return True

5 个答案:

答案 0 :(得分:5)

如果要检查矩阵是否为NxN,可以使用:

def isSquare (m): return all (len (row) == len (m) for row in m)

正如您在评论中所说:如果所有行的长度等于行数。

答案 1 :(得分:2)

您将列表列表作为参数传递。你给出的例子是[[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

答案 2 :(得分:0)

如果矩阵表示二维空间中的两个坐标,则示例为正方形。您可以通过测试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

答案 3 :(得分:0)

这也应该有用。

A是带矩阵的列表。

import SpriteKit

class GameScene: SKScene {


override func didMoveToView(view: SKView) {
    backgroundColor = UIColor(red: 159.0/255.0, green: 201.0/255.0, blue: 244.0/255.0, alpha: 1.0)

    let ground = SKSpriteNode(color: UIColor.greenColor(), size: CGSize(width: view.frame.size.width, height: 20.0))
    ground.position = CGPointMake(self.frame.size.width / 32 * 16, self.frame.size.height / 20 * 0.5)
    addChild(ground)

}

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
   /* Called when a touch begins */

}

override func update(currentTime: CFTimeInterval) {
    /* Called before each frame is rendered */
}
}

import UIKit
import SpriteKit

class GameViewController: UIViewController {

//! means were promising we will initialize "scene"
var scene: GameScene!

override func viewDidLoad() {
    super.viewDidLoad()

    //Configure the view
    let skView = view as! SKView
    //If finger is on iphone, you cant tap again
    skView.multipleTouchEnabled = false

    //Create and configure the scene
    scene = GameScene(size: skView.bounds.size)
    scene.scaleMode = .AspectFill

    //present the scene
    skView.presentScene(scene)

}


override func shouldAutorotate() -> Bool {
    return true
}

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
        return .Landscape
    } else {
        return .Landscape
    }
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Release any cached data, images, etc that aren't in use.
}

override func prefersStatusBarHidden() -> Bool {
    return true
}
}

答案 4 :(得分:0)

假设m是一个numpy矩阵,并且您已导入numpy

def square(m):
    result = True if m.shape[0] == m.shape[1] else False
    return result