고급 파이썬 개발 과정
챕터
>
레벨
고급 리스트
중첩 목록 만들기
목표
중첩 리스트를 사용하여 조미료를 올바르게 향신료 선반에 보관하세요.
향신료 선반 중 하나가 비어 있어 제대로 재보충해야 합니다. 보관소에 조미료들이 있지만 올바르게 맞추어 정리되고 향신료 선반에 배치되어야 합니다.
아이템의 양이 많고 아이템들이 향신료 선반의 다른 선반에 보관되어 있기 때문에, 일반 리스트와 딕셔너리만으로는 충분하지 않습니다. 이러한 경우에는 하나 이상의 리스트를 포함하는 중첩 리스트를 사용할 수 있습니다.
조미료를 보관하려면 먼저 아이템을 올바르게 보관할 수 있도록 병을 가져와야 합니다. 금색 X 표시가 있는 곳으로 걸어가서 상자를 향한 후 collect() 함수를 사용하여 보관을 용이하게 하기 위해 "empty jar" 를 가져옵니다.
병을 수집한 후에는 나무 상자 앞에 있는 연한 X 표시들이 있는 곳으로 걸어가세요. 이 레벨에는 각 상자마다 하나씩 총 네(4) 개의 리스트 상수가 있습니다. 이들은 crate1, crate2, crate3, 그리고 crate4 입니다. 이 리스트 상수를 사용하여 speak() 함수를 호출해 각 상자의 내용을 확인하세요. 상수들은 오른쪽에서 왼쪽 순서로 상자에 대응됩니다. 예를 들어 player.speak(crate1) 과 같이 호출합니다.
상자의 내용을 확인한 후 리스트 컴프리헨션 을 사용하여 리스트 상수 내부의 불필요한 항목 없이 새로운 리스트들을 생성하세요. 만약 상자의 내용에 "package", "string" 또는 "stuffing" 이 포함되어 있다면, 이전 챕터와 동일한 공식을 사용하여 리스트를 조율하세요. 예를 들어:
crate1 = ["bay herb", "cilantro herb", "ginger herb", "oregano herb", "string"] herbs = [x for x in crate1 if not "string" in x]
위 코드는 항목에 "string" 이 포함되지 않은 항목들로 구성된 새로운 리스트를 만듭니다. 리스트의 이름은 herbs, spices, salts 와 sugars 여야 하며, 해당 리스트 내부의 항목들이 그 이름을 포함하고 있음을 통해 어떤 리스트가 어떤 이름을 가져야 하는지 알 수 있습니다.
네 개의 리스트가 모두 생성되면, 이들을 모두 중첩 리스트 로 결합할 시간입니다. seasonings 라는 이름의 리스트를 생성한 후, 앞서 생성한 리스트들을 새로운 리스트 안에 추가하세요. 다음과 같이:
seasonings = [ ] seasonings.append(herbs) .......
모든 항목이 중첩 리스트 에 함께 포함되면, 초록색 카펫 위의 어두운 X 표시가 있는 곳으로 걸어가 선반을 향하세요. seasonings 중첩 리스트와 함께 speak() 함수를 사용하여 각 선반의 항목들을 확인합니다. 그 후에 place() 함수를 리스트와 함께 사용하여 레벨을 완료하세요. 예: player.speak(seasonings).