파이썬3 2차원배열 입력하기

조회수 265회

안녕하세요. 시작한지 얼마안 된 정말 초보입니다.

2차원 배열 입력 받을 때, 아래처럼 하라고 배웠습니다.

아래에 있는 append, list, map, int, input, split 함수 내용은 숙지했는데, 아무리 생각해도 도저히 출력 값이 중첩리스트로 이쁘게 나오는게 이해가 안됩니다.

너무 기초적인 질문이라 웃기시겠지만 저는 나름 진지할지도?

아래 코드로 2차원 배열이 중첩리스트로 이쁘게 들어가는 원리를 자세하게 설명해주실 수 있나요?

mylist = []

for i in range(3) :
    mylist.append(list(map(int, input('').split())))

print(mylist)

2 답변

  • list(map(int, input('').split()))
    

    이 부분을 하나하나 뜯어 봅시다!

    • input에서 받은 값이 3 1 4 1 5 9라고 해 봅시다.
    • input('').split()은 입력 값을 공백()로 나눠 줍니다.
      • input('').split() = "3 1 4 1 5 9".split() = ["3", "1", "4", "1", "5", "9"]
    • map은 첫 번째 인자로 함수, 두 번째 인자를 배열으로 받아 배열의 모든 원소에 함수를 실행하는 이터레이터를 만듭니다. 여기서 int는 형 변환을 해 주겠군요.
      • map(int, ["3", "1", "4", "1", "5", "9"]) = iterator [int("3"), int("1"), int("4"), int("1"), int("5"), int("9")] = iterator [3, 1, 4, 1, 5, 9]
    • list는 리스트를 만들어 줍니다.
      • list(iterator [3, 1, 4, 1, 5, 9]) = [3, 1, 4, 1, 5, 9]

    따라서 이 줄은 입력을 한 줄 받아서 정수들의 리스트로 예쁘게 만들어 줌을 알 수 있습니다. 이걸 range(3)로 돌리면 세 줄을 받아 각각 정수 리스트로 만들어 줄 거고, 그 실행 결과를 append 했으니 예쁜 2차원 배열이 나올 것입니다.

  • 명령 하나씩 돌려보고 어떻게 진행되는건가 확인해보세요.

    mylist = []
    
    for i in range(3) :
      a = input('')
      print(a)
      a = a.split()
      print(a)
      a = map(int, a)
      print(a)
      a = list(a)
      print(a)
      print(mylist)
      mylist.append(a)
      print(mylist)
    
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)