
9/5 3, 4, 5, 6세션
*컨테이너 자료형 : 문자열(String), 리스트(List), 튜플(Tuple), 집합(Set), 딕셔너리(Dictionary)
# 빈 리스트 만들기
> score1 = []
> score2 = list()
# 2차원 리스트 만들기
score = [[80, 90, 75],
[85, 70, 99],
[90, 75, 80]]
range(m, n) 함수의 결과는 범위임. 리스트가 아니다.list(range(m, n)) 처럼 list() 로 감싼다.# 0 ~ 9 정수를 요소로 갖는 리스트
> nums = list(range(10))
# -5 ~ 5 사이의 정수를 요소로 갖는 리스트
> nums = list(range(-5, 6))
range(m, n, x) : m부터 n-1까지 x 만큼씩 증가하는 정수list() 를 만나면 개별 값으로 들어간다.# 문자열 하나를 요소로 갖는 리스트
> list_str = ['PYTHON']
> list_str
['PYTHON']
# 개별 문자를 요소로 갖는 리스트 #1
> list_str = list('PYTHON')
> list_str
['P', 'Y', 'T', 'H', 'O', 'N']
# 리스트를 요소로 갖는 리스트
> score = [80, [90, 100, 85], 85, 90]
# 인덱싱
> print(score[1])
> print(score[1][1])
[90, 100, 85]
100
예제 1 슬라이싱 연습
> member = ['홍길동', 85, '한사랑', 95, '일지매', 90,' 박여인', 75]
# 슬라이싱
> print(member[-4:])
> print(member[:2])
['일지매', 90, ' 박여인', 75]
['홍길동', 85]
예제 2 리스트를 요소로 갖는 리스트를 슬라이싱
> score = [80, [90, 100, 85], 85, 90]
# 슬라이싱
> print(score[1][1:])
[100, 85]
예제1 복합 대입 연산자로 리스트 연결
# 빈 리스트 만들기
> score = []
# 리스트 연결
> score += [90, 80, 95, 70]
> score += [70, 75, 90, 100]
> score
[90, 80, 95, 70, 70, 75, 90, 100]
예제2 리스트 반복
# 리스트 만들기
> score1 = [90, 80, 95, 70]
# 리스트 요소를 곱한 수 만큼 반복하기
> score2 = score1 * 2
[90, 80, 95, 70, 90, 80, 95, 70]
예제3 요소를 넣어 리스트 생성
# 요소 0을 20개 가진 리스트 만들기
> my_list = [0] * 20
> print(my_list)
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
예제4 리스트 요소 없애기
# 리스트 만들기
> score1 = [90, 80, 95, 70]
# 리스트에 0 곱하기
> score0 = score1 * 0
> print(score1)
> print(score0)
[90, 80, 95, 70]
[]
문자열은 변경이 불가능하다!
튜플도 변경이 불가능하다! (인덱싱, 슬라이싱은 가능)


사용 가능한 메소드
append() : 맨 뒤에 요소 하나만 추가. 반환하는 것이 아니라, 리스트를 직접 변경하는 것.insert() : 특정 위치에 요소 하나만 추가.extend() : 하나의 다른 리스트 연결clear() : 요소 전체 삭제copy() : 리스트 복사 (주소값 다름)# range() 함수로 리스트 만들기
> nums = list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
> nums[4:7] = [40, 50]
[0, 10, 20, 30, 40, 50, 7, 8, 9]
append(v) : 맨 뒤에 요소 하나만 추가append() 는 반환값이 없음. 작동만 하는 것임. 만약 append() 의 결과를 받으려고 하면 사라져 버림(None 출력).# 0 ~ 4 정수를 갖는 리스트 만들기
> nums = list(range(5))
[0, 1, 2, 3, 4]
# 맨 뒤에 요소 하나 추가
> nums.append(5)
[0, 1, 2, 3, 4, 5]
# 맨 뒤에 리스트 하나를 요소로 추가
> nums.append([7, 8])
[0, 1, 2, 3, 4, 5, [7, 8]]
insert(i, v) : 중간에 요소 하나만 추가i는 뒤로 밀고 싶은 요소의 인덱스임 append() 를 사용하는 것이 편리함extend([v]) : 하나의 다른 리스트 연결방법 1 : 요소 삭제
del 다음에 인덱싱/슬라이싱 구문을 추가해 해당 요소/범위 삭제> del nums[7]
> del nums[4:]
방법 2 : 전체 삭제
clear() : 기존 객체를 유지하면서 요소 삭제# 리스트 복사
> nums = list(range(10))
> nums_copy_1 = nums # 그냥 복사
> nums_copy_2 = nums[:] # 전체 범위를 지정하여 복사
# 확인
> print(nums_copy_1)
> print(nums_copy_2)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
copy() : 완전 복사 메소드reverse() : 앞뒤 순서를 바꿈count(n) : 요소 중 n 이 몇 개 있는 지index(v) : 요소 v 의 인덱스가 몇 번인지sort() : 오름차순으로 정렬sort(reverse=True) : 내림차순으로 정렬remove(v) : 요소 v 를 제거. 여러개일 경우 가장 처음의 요소 하나만 제거pop(i) : i 번째 요소 삭제하고 삭제한 요소 반환