- 3주차 미션:
리스트, 딕셔너리, 범위 자료형에 대해 이해한 내용을 바탕으로 포스팅하기
리스트: 인덱스를 기반으로 값을 저장하는 것
- 개념: 여러 독립적인 자료를 모아서 사용할 수 있게 해주는 자료
- 사용법: 대괄호[] 내부에 여러 종류의 자료를 넣어 선언. 선언한 리스트를 출력하면 내부의 자료를 모두 출력한다.
가상의 리스트 list_a를 선언할 때,
list_a[-1] #뒤에서부터 요소를 선택
list_a[3][0] #접근 연산자를 이중으로 사용할 수 있음(3번째 자료의 0번째 자료 출력)
list_a[1][1] #리스트 안에 리스트를 사용할 수도 있음
*리스트 인덱스는 '0부터' 세기 시작한다. 존재하지 않는 위치를 지정하면 IndexError가 발생하니 유의할 것.
- 연산: 연결(+), 반복(*), len()
연결+: print(list_a + list_b) #두 리스트의 값이 모두 출력됨 >>>[1,2,3,4,5,6]
반복*: print(list_a*3) #리스트 값이 세 번 출력됨 >>>[1,2,3,1,2,3,1,2,3]
len(): print(len(list_a)) #리스트의 길이가 출력됨 >>> 3
- 요소 추가랑 제거: append(), insert(),extend()
리스트명.append(요소) #리스트 맨 뒤에 요소 추가됨
리스트명.insert(위치, 요소) #위치 부분에 요소 추가됨
리스트명.extend([요소들]) #extend() 함수는 매개변수로 리스트를 입력한다. 한 번에 여러 개의 요소 추가가 가능하다. 원래 리스트 뒤에 새로운 리스트의 요소들을 모두 추가해 준다.
- 연결 연산자와 요소 추가의 차이(+와 extend())
연결 연산자는 비파괴적이다(원본 리스트에 어떤 영향도 주지 않는다)
extend() 함수로 요소를 추가하는 건 파괴적이다(리스트에 요소를 직접 추가해 실제로 변형이 일어난다)
- 요소 제거하기
del 리스트명[인덱스] #인덱스 위치에 있는 요소를 제거
리스트명.pop(인덱스) #인덱스 위치에 있는 요소를 제거. 단, 매개변수를 입력하지 않으면 -1이 들어가는 것으로 취급해서 마지막 요소를 제거
- 리스트 슬라이싱
리스트[시작_인덱스:끝_인덱스:단계] #단계는 지정된 숫자만큼 건너뛰거나(2 >>> [1,3,5]) 반대로 출력된다(-1 >>> [5,4,3,2,1])
- 모두 제거: 리스트.clear()
- 리스트 내부 확인: 값 in(or not in) 리스트
딕셔너리: 키를 기반으로 값을 저장하는 것, {}로 변수 선언, 가리키는 위치가 키가 됨.
변수 = { 키:값, 키:값 ... , 키:값}
dict_a = {"name" : "어벤져스 엔드게임", "type" : 히어로 무비"}
*요소 접근 시에는 [] 사용.
dict_a["name"] >>> '어벤져스 엔드게임'
*딕셔너리와 리스트 또한 하나의 자료이므로, 값으로 리스트와 딕셔너리를 넣을 수도 있다.
범위: 조건에 따라 반복하는 경우에 사용. range() 함수를 사용하며, 매개변수 개수(1~3)에 따라 활용도가 달라진다.
매개변수 하나: list(range(5)) >>>[0,1,2,3,4] #0부터 5-1까지
매개변수 둘: list(range(0,5)) >>>[0,1,2,3,4] #0부터 5-1까지
매개변수 셋: list{range(0, 10, 3)) >>>[0,3,6,9] #0부터 3씩 증가하면서 10-1까지
- 추가 숙제:
p.213 1번 문제 답 쓰고 인증
list_a.extend(list_a) 답: [0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7]
list_a.append(10) 답: [0, 1, 2, 3, 4, 5, 6, 7, 10]
list_a.insert(3, 0) 답: [0, 1, 2, 0, 3, 4, 5, 6, 7]
list_a.remove(3) 답: [0, 1, 2, 4, 5, 6, 7] #remove()는 해당하는 '값'으로 3을 지운 것
list_a.pop(3) 답: [0, 1, 2, 4, 5, 6, 7] #pop()은 해당하는 '위치'로써 3자리에 있는 값을 지운 것
list_a.clear() 답: []