我想测试[[5,6],[7,8]]的2x2矩阵,看它是否是正方形。
我运行我的代码并且我应该变为True,但我得到了False而不是......
def square(sq):
for element in sq:
if element:
return False
return True
答案 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