파이썬 연습 21: 리스트 컴프리헨션

의문



정수 n과 함께 직육면체의 크기를 나타내는 세 개의 정수(x,y,z)가 제공됩니다.
  • 가능한 모든 좌표 목록을 인쇄합니다.
  • 3D 그리드
  • 에서 (i, j , k)로 주어진
  • 여기서 i+j+k의 합은 n과 같지 않습니다.
  • 즉 n보다 크거나 작을 수 있음

  • 여기서 0<=i<=x; 0<=j<=y; 0<=k<=z
  • 목록 내포를 사용하십시오
  • .
  • 사전식 오름차순으로 목록을 인쇄합니다.

  • 예시



    엑스 = 1
    y = 1
    z = 2
    엔 = 3
  • (i, j, k)의 모든 순열은 다음과 같습니다.


  • [[0, 0, 0], [0, 0, 1], [0, 0, 2], [0, 1, 0], [0, 1, 1], [0, 1, 2], [1, 0, 0], [1, 0, 1], [1, 0, 2], [1, 1, 0], [1, 1, 1], [1, 1, 2]]
    


  • i, j, k의 합이 n과 같지 않은 요소의 배열을 인쇄합니다(필수 출력).

  • [[0, 0, 0], [0, 0, 1], [0, 0, 2], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 2]]
    


    내 솔루션


  • 코드

  •     # make list of all x,y and z possible number
        x = int(input())
        y = int(input())
        z = int(input())
        n = int(input())
        x = [i for i in range(x+1)]
        y = [i for i in range(y+1)]
        z = [i for i in range(z+1)]
        # for each combination of i,j,k will form a sublist in the final_list, and sum of i,j,k will not equal to n
        final_list = [[i,j,k]for i in x for j in y for k in z if (i+j+k)!=n]
        print(final_list)
    


    기타 솔루션


  • 짧은 버전

  • x = int(input())
    y = int(input())
    z = int(input())
    n = int(input())
    # for each combination of i,j,k will form a sublist in the final_list, and sum of i,j,k will not equal to n
    final_list = [[i,j,k]for i in range(x+1) for j in range(y+1) for k in range(z+1) if (i+j+k)!=n]
    print(final_list)
    


    내 반성


  • 문제를 처음 시도하는 경우 변수 형식 표준 입력을 가져와야 함
  • 좋은 운동.
  • 목록 이해에서 다중 for 루프를 처음 사용합니다.

  • 신용 거래



    에 도전 hackerrank

    좋은 웹페이지 즐겨찾기