2013-10-16 3 views
0

목록 인 입력이 행과 같은 양의 열과 같은 양의 파트로 구성된 2D인지 확인하는 방법을 찾아야합니다. 예 : [[4,5],[4,5,6]] and [[2,3],[6,1],[2,9]]은 오류 메시지를 생성합니다. 그러나 [[3,4,5],[4,6,8],[5,8,-1]] and [[4,5],[4,1]]이 맞을 것입니다.파이썬으로 2D 매트릭스에 대한 입력을 확인하는 데 도움이 필요합니다

for row in square: 
     if len(row) != len(square): 
      return False 

을하지만 아주 잘 작동하지 않습니다 나는 노력했다.

EDIT : 또한이 검사는 검사 목록의 시작 부분에 있으므로 if 문 형식이어야합니다. 반환 값이 테스트는 경우가 있습니까

def is_square(matrix): 
    return all(len(row) == len(matrix) for row in matrix) 
+0

"하지만 제대로 작동하지 않습니다."- 왜 안 되니? 그것이 올바르게 작동하지 않는 예를 들어 줄 수 있습니까? 어떤 오류나 예기치 않은 동작이 보이십니까? – mgilson

+0

'len (정사각형의 행에 대해 len (행)) == 1'을보다 간결하게 시도해 볼 수 있습니다. 각 행의 열 수가 같은지 확인하십시오. –

+1

@WaleedKhan - OP의 단락 동작이 없으며 행 길이 == 열 길이라는 것을 주장하지 않고 마지막으로 그것을 수행하는 방법에 대해 알게되었습니다. 만약 당신이 1 개의 라이너를 찾고 있다면, 행렬에'all (len (row) == len (matrix) 행렬을 제안하자. ' 그러나 그것은 여전히 ​​OP가 원래 솔루션에 대해 잘못되었다고 생각하는 질문에 답하지 못합니다. – mgilson

답변

1

: 당신의 매트릭스를 가정

+0

아, 방금'return True'가 거기에 있다고 가정했습니다. 좋은 캐치. 하나의 작은 nitpick - "값을 반환하지 않습니다"꽤 정확하지 않습니다. 함수에서 return 문이 안되면 (또는'return'), 파이썬은 암묵적으로 특별한 싱글 톤'None'을 반환합니다. – mgilson

+0

@mgilson - 귀하의 질책은 공정한 의견입니다. 나는 내가 'None'에 대해 부정확하다는 의심을 품었지만, 더욱 구체적으로되면 지식 부족이 더 많이 드러날 것이라고 생각했다. 명확히 해줘서 고마워. – Pines

+0

부 울린 컨텍스트에서'None'은'False'로 평가됩니다. 따라서'None None :'과'False :'는 동일합니다. 이 경우 OP가 자신의 기능을 통해 떨어질 가능성이 높으며 그 결과는 항상 "거짓과 같습니다". – mgilson

1

은 (당신이 당신의 질문에이 같이 목록의 목록 등), 당신은 단순히 뭔가를 할 수있는 다른 시퀀스를 보유하고 순서입니다 실패하지 않았습니까? 아무것도 테스트에 더가 없습니다 가정, 함수에 코드를 넣어 :

def matrix_test(square): 
    for row in square: 
     if len(row) != len(square): 
      return False 

을 ... None을 돌려 값을 반환하지 않는 False를 반환 또는 중 하나. 따라서이 함수를 호출하여 행렬을 테스트하면 테스트를 통과 한 행렬에 대해 True 결과를 얻을 수 없습니다. 거기에 이미 아니라면, 마지막 줄을 추가 그래서 :

return True 

당신은 그 그것은 코드 더보고 도움이 될 문제가 아니라면

if matrix_test(matrix001): 
    #run the next test 

로 특정 행렬을 확인 할 수 있습니다 그것이 실행될 때 어떤 일이 일어나는지 알기.

관련 문제