- 여러 개의 데이터가 묶여있는 자료형을 컨테이너 자료형이라고 하고,
이러한 컨테이너 자료형의 데이터 구조를 자료구조라고 한다.
- 자료구조는 각각의 컨테이너 자료형에 따라서 차이가 있으며, 파이썬의 대표적인
컨테이너 자료형으로는 리스트(List), 튜플(Tuple), 딕셔너리(Dic), 셋트(Set)가 있다.

- 배열과 같이 여러 개의 데이터를 나열한 자료구조. ( 데이터를 줄 세우자 )
- ‘[ ]’를 이용해서 선언하고, 데이터 구분은 ‘,’를 이용한다.
- 숫자, 문자(열), 논리형 등 모든 기본데이터를 같이 저장할수 있다.
- 리스트에 또 다른 컨테이너 자료형 데이터를 저장할 수도 있다.
- 아이템에 자동으로 부여되는 번호표.

- 리스트 아이템은 인덱스를 이용해서 조회 가능하다.
print('students[0]: {}'.format(students[0]))
print('students[1]: {}'.format(students[1]))
print('students[2]: {}'.format(students[2]))
print('students[3]: {}'.format(students[3]))
print('students[4]: {}'.format(students[4]))
- 리스트 길이란? 리스트에 저장된 아이템 개수를 뜻한다.
- len()과 반복문을 이용하면 리스트의 아이템 조회가 가능하다.
for i in range(len(students)):
print('i: {}'.format(i)
print('students[{}]: {}'.format(i, students[i]))
- len() 함수는 리스트의 개수뿐만 아니라 문자열의 길이도 알 수 있다.
- for문을 이용하면 리스트의 아이템을 자동으로 참조할 수 있다.
for i in range(len(cars)):
print(cars[i])
for car in cars:
print(car)
- for문을 이용하면 리스트의 아이템을 자동으로 참조할 수 있다.
- for문을 이용하면 리스트 내부에 또 다른 리스트의 아이템을 조회할 수도 있다.
studentCnts = [[1,19], [2,20], [3,22], [4,18], [5,21]]
for classNo, cnt in studentCnts:
print('{}학급 학생수: {}'.format(classNO, cnt)
- while문을 이용하면 다양한 방법으로 아이템 조회가 가능하다.

- enumerate() 함수를 이용하여 아이템을 열거할 수 있다. 인덱스와 아이템을 한번에 조회.
sports = ['농구', '수구', '축구', '마라톤', '테니스']
for i in range(len(sports)):
print('{} : {}'.format(i, sports[i]))
for idx, value in enumerate(sprots):
print('{} : {}'.format(i, sports[i]))
- enumerate()는 문자열에도 적용할 수 있다.
str = 'Hello python'
for idx, value in enumerate(str):
print('{} : {}'.format(idx, value))
- append() 함수를 이용하면 마지막 인덱스에 아이템을 추가할 수 있다.

- insert() 함수를 이용하면 특정 위치(인덱스)에 아이템을 추가할 수 있다.

- pop() 함수를 이용하면 마지막 인덱스에 해당하는 아이템을 삭제할 수 있다.

- pop(n) 함수를 n인덱스에 해당하는 아이템을 삭제할 수 있다.

- remove() 함수를 이용하면 특정 아이템을 삭제할 수 있다.

- remove()는 한 개의 아이템만 삭제 가능하다. 만약 삭제하려는 데이터가2개 이상이라면 while문을 이용하자.
subjects = ['국어', '영어', '수학', '과학', '국사']
print('시험 과목표: {}'.format(subjects))
removeSubject = input('삭제 과목명 입력: ')
while removeSubject in subjects:
subjects.remove(removeSubject)
print('시험 과목표: {}'.format(subjects))
- extend() 함수를 이용하면 리스트에 또 다른 리스트를 연결(확장)할 수 있다. (list1)

- 덧셈 연산자를 이용해서 리스트를 연결할 수도 있다. (list3)

- sort() 함수를 이용하면 아이템을 정렬할 수 있다.

- reverse() 함수를 이용하면 아이템을 순서를 뒤집을 수 있다.

- [n:m]을 이용하면 리스트에서 원하는 아이템만 뽑아낼 수 있다.

- 슬라이싱할 때 단계를 설정할 수 있다.
numbers = [2, 44, 33, 43, ,46, 87, 54]
print('numbers: {}'.format(numbers[:-2:2]))
- 슬라이싱을 이용해서 아이템을 변경할 수 있다.
students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
students[1:4] = ['park chanho', 'lee yonggyu', 'gang hodong']
print('students : {}'.format(students))
- slice()함수를 이용해서 아이템을 슬라이싱할 수 있다.
코드
students = ['홍길동', '박찬호', '이용규', '강호동', '박승철', '김지은']
print('students : {}'.format(students))
print('students : {}'.format(students[slice(2,4)]))
print('students : {}'.format(students[slice(4)]))
print('students : {}'.format(students[slice(2,len(students))]))
print('students : {}'.format(students[slice(2,len(students)-2)]))
print('students : {}'.format(students[slice(len(students)-5,len(students)-2)]))
출력

- 리스트를 곱셈 연산하면 아이템이 반복된다.

- index(item) 함수를 item의 인덱스를 알아낼 수 있다.

- count() 함수를 이용하면 특정 아이템의 개수를 알아낼 수 있다.

- del 키워드를 이용하면 특정 아이템을 삭제할 수 있다.
