파이썬에서는 리스트 안에 또 다른 리스트를 포함시킬 수 있습니다 .이를 중첩리스트라고 합니다. 중첩리스트는 데이터를 계층적으로 관리하거나 구조적으로 배열하는 데 유용하게 활용할 수 있어요. 중첩 리스트와 관련한 내용을 살펴보겠습니다.
중첩 리스트 만들기
중첩 리스트는 리스트 안에 또 다른 리스트를 넣음으로써 생성할 수 있습니다. 다음과 같은 코드를 작성해 보겠습니다.
day = ["mon", "tue", "wed", "thu", "fri"]
num = [1, 2, 3, 4, 5]
xlist = [day, num]
여기에서 day와 num은 각각 리스트이고, 이를 포함하는 xlist는 중첩 리스트가 됩니다. xlist는 두 개의 리스트를 항목으로 가지는 리스트이면서 계층적인 데이터를 효율적으로 관리할 수 있는 구조가 됩니다.
중첩 리스트의 인덱스
중첩 리스트에서도 항목에 접근하기 위해 인덱스를 사용합니다. 리스트가 중첩되어 있기 때문에 2차원 배열처럼 인덱스가 동작하는데, 그 내용은 다음과 같습니다.
- 첫 번째 인덱스: 바깥 리스트의 항목 위치를 가리킨다.
- 두 번째 인덱스: 바깥 리스트의 특정항목(리스트)에 접근하여 그 안에 포함된 항목의 위치를 가리킨다.
예를 들어, 위에서 선언한 xlist를 기준으로 보면,
- "tue"는 day 리스트의 1번 인덱스 항목이므로 xlist[0][1]로 접근할 수 있다.
- 숫자 3은 num 리스트의 2번 인덱스 항목이므로 xlist[1][2]로 접근할 수 있다.
이처럼 중첩 리스트는 계층 구조에 따라 인덱스를 두 번 이상 사용하여 자료에 접근할 수 있습니다.
리스트의 길이 확인 len
리스트의 길이를 확인하기 위해 len() 함수를 사용할 수 있습니다. len()은 리스트에 포함된 항목의 수를 반환합니다.
xlist = [["mon", "tue", "wed"], [1, 2, 3, 4]]
print(len(xlist)) # 출력: 2
위 코드에서 len(xlist)의 결과는 2입니다. 이는 xlist가 두 개의 항목(["mon", "tue", "wed"]와 [1, 2, 3, 4])을 가지고 있기 때문입니다. 중첩 리스트의 내부 리스트에 포함된 항목 수를 알고 싶다면 해당 내부 리스트를 대상으로 len()함수를 사용하면 됩니다.
print(len(xlist[0])) # 출력: 3
print(len(xlist[1])) # 출력: 4
중첩 리스트를 활용한 데이터 구조화
중첩 리스트는 데이터를 계층적으로 관리할 수 있다는 점에서 강력한 도구입니다. 예를 들어, 학교의 학급별 학생 명단을 저장하려고 한다면 중첩 리스트를 활용할 수 있어요.
students = [
["Alice", "Bob", "Charlie"], # 1학년
["David", "Eva", "Frank"], # 2학년
["Grace", "Helen", "Ian"] # 3학년
]
위와 같은 경우 각 학년의 학생 명단은 리스트로 관리되고, 전체 학급 명단은 중첩 리스트로 구성됩니다. 만약에 2학년의 첫 번째 학생에게 접근하려면 students[1][0]을 사용하면 됩니다. 반복문을 배우지 않았지만, 모든 학년의 학생 수를 알고 싶다면 다음과 같이 len() 함수를 활용한 반복문을 사용하면 됩니다.
for i in range(len(students)):
print(f"{i + 1}학년 학생 수: {len(students[i])}")
중첩 리스트와 반복문
중첩 리스트를 다룰 때 반복문을 활용하면 데이터를 효율적으로 처리할 수 있습니다. 예를 들어 중첩 리스트의 모든 항목을 출력하려면 다음과 같은 중첩 반복문을 사용할 수 있어요.
for sublist in xlist:
for item in sublist:
print(item, end=" ")
이 코드는 xlist의 각 리스트를 반복하며 내부 리스트의 모든 항목을 출력하는 반복문이에요.
중첩 리스트 응용 예시
중첩 리스트는 2차원 공간 데이터를 관리할 때도 유용합니다. 2차원 좌표 데이터를 다음과 같이 저장할 수 있어요.
coordinates = [
[0, 0], # 원점
[1, 2], # 첫 번째 점
[3, 4], # 두 번째 점
]
이 데이터를 활용하여 각 점의 위치를 출력하거나 계산할 수도 있겠죠?
for point in coordinates:
print(f"Point: x={point[0]}, y={point[1]}")
마치며
중첩 리스트는 데이터를 구조적으로 관리하고 계층적으로 표현할 때 유용합니다. 반복문이나 문자열을 출력하는 다양한 방법에 대해 아직 잘 몰라서 어떻게 활용되는지 명확하게 알기 어려울 수도 있지만, 나중에는 복잡한 데이터를 다루기 위해 사용하게 될 거예요. 인덱스와 len()함수, 반복문을 활용하여 중첩 리스트를 사용하면 데이터를 보다 체계적으로 관리하고 다양한 응용 프로그램을 작성할 수 있게 될 거예요.