Python 한 줄 코드 로 행렬 회전 문 제 를 해결 합 니 다.

오늘 검 지 오 피 스 를 칠 할 때 이런 문제 에 부 딪 혔 다.
행렬 을 입력 하고 외 향 에서 시계 방향 으로 순서대로 모든 숫자 를 출력 한다.예 를 들 어 다음 과 같은 4 X 4 행렬 을 입력 하면 1,2,3,8,12,16,15,14,13,9,9,10,6,7,11,10.
사고:큐 브 가 시계 반대 방향 으로 회전 하 는 방법 을 모 의 하여 첫 번 째 줄 을 꺼 내 는 작업 을 할 수 있 습 니 다.예 를 들 어:

1 2 3
4 5 6
7 8 9
pop 출력 을 이용 하여 첫 줄 을 삭제 한 후 시계 반대 방향 으로 회전 하면:

6 9
5 8
4 7
그리고 상술 한 조작 을 계속 반복 하면 된다.
가장 중요 한 것 은 행렬 의 시계 반대 방향 조작 을 실현 하 는 것 이다.행렬 의 회전 에 관 해 서 는 여러 가지 가 있 습 니 다.전환,시계 방향,시계 반대 방향,아래 에 코드 를 직접 올 리 고 python 코드 로 이 세 가지 조작 을 실현 합 니 다.
매트릭스 전환:

matrix = [[1,2,3], [4,5,6], [7,8,9]]
matrix = map(list, zip(*matrix))
print(matrix)
 
>>>[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
매트릭스 시계 방향 으로 회전:먼저 행렬 을 상하 로 뒤 집 은 다음 에 다시 돌려 라.

matrix = [[1,2,3], [4,5,6], [7,8,9]]
matrix[:] = map(list,zip(*matrix[::-1]))
print(matrix)
 
>>>[[7, 4, 1], [8, 5, 2], [9, 6, 3]]
매트릭스 시계 반대 방향 회전:먼저 행렬 을 돌려 놓 은 다음 에 상하 로 뒤 집 습 니 다.

matrix = [[1,2,3], [4,5,6], [7,8,9]]
matrix[:] = map(list,zip(*matrix))[::-1]
print(matrix)
 
>>>[[3, 6, 9], [2, 5, 8], [1, 4, 7]]
다음은 완전한 문제 풀이 코드 입 니 다.

# -*- coding:utf-8 -*-
class Solution:
  # matrix       ,      
  def printMatrix(self, matrix):
    # write code here
    result = []
    while(matrix):
      result += matrix.pop(0)
      if not matrix or not matrix[0]:
        break
      #         
      matrix[:] = map(list, zip(*matrix))[::-1]
    return result
이상 의 Python 한 줄 코드 가 행렬 의 회전 문 제 를 해결 하 는 것 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 에 게 참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기