03 list, tuple, dictionary 정리
2020년02월14일03 list, tuple, dictionary 정리
참고
애스크장고 AskDjango
여러 원소들을 가지고 있는 자료 구조
- list, deque
- set, fronzensets
- dict, defaultdict, OrderedDict, Counter
- tuple, namedtuple
- **str
list생성
- 생성문법: [], list(), list(iterable)
- 여러 값을 순차적으로 저장, 순서를 보장
- 리스트를 한 줄로 쓸 때에는 대개 끝에 쉼표를 쓰지 않음
- 여러 줄로 나누어 쓸 때에는 항목 추가/삭제를 용이하게 하기 위해 끝에 쉼표를 쓴다.
numbers= [1,3,5,7,9]
names = [
'Tom',
'Steve',
'Min',
]
- 색인(index)지원: 0부터 시작하여 1씩 증가
- numbers[0] 은 위의 numbers 리스트에서 맨 처음 항목(1)을 가르킨다.
- 음수 색인 지원: -1은 맨 끝에서부터를 의미한다. -2는 끝에서 두 번째.
- numbers[-1]는 numbers 리스트에서 9를 의미한다.
- 다른 타입의 값들로도 구성 가능
- a=[1,’1’,’2’,2] 이런식으로 가능 dict형, tuple형 들 여러 자료형을 넣을 수 있다.
- 가급적 같은 타입으로 맞춰주는게 가독성 면에서 좋다.
list 메서드
- numbers.append(값): numbers리스트 마지막에 값을 추가한다.
- numbers.pop(공란 or 색인값): 공란인 경우 numbers 리스트의 마지막 값을 삭제하고, 색인값을 입력한 경우에는 해당 색인의 값을 삭제한다.
- numbers.remove(값): numbers리스트에서 왼쪽부터 최조 발견된 값을 삭제한다. [1,2,3,2]일 때 remove(2)를 실행하면 맨 처음 2를 삭제한다.
- numbers.insert(색인값,값): numbers리스트에서 색인값 위치에 값을 추가함. [1,2,3,2]일 때 insert(1,11) 1번 자리에 11값을 삽입함. -> [1,11,2,3,2]
슬라이스 하기
[시작인덱스:끝인덱스]
를 통해 원하는 부분을 잘라 활용할 수 있다.
numbers=[1,2,3,4,5,6,7,8,9,10]
print(numbers[1:]) #1번째부터 끝까지 출력
# [2,3,4,5,6,7,8,9,10] 출력
print(numbers[1:7]) #1번째부터 6번째까지 출력. 7미만이라 이해하면 될듯
# [2,3,4,5,6,7]
print(numbers[1:7:2]) #1번째부터 6번째까지 2씩 증가하여 출력.
#[2,4,6]
print(numbers[::-1]) #반대로 출력, 은근 쓰이니 기억하기!
#[10,9,8,7,6,5,4,3,2,1]
리스트 합치기
numbers1 = [1,3,5,7]
numbers2 = [2,4,6,8]
print(numbers1+numbers2)
[1,3,5,7,2,4,6,8]
List Comprehension
numbers1 = [1,3,5,7]
numbers2 = [2,4,6,8]
print([i + j for (i, j) in zip(numbers1, numbers2)])
# [3,7,11,15]
zip함수는 동일한 개수로 이루어진 자료형을 묶어주는 역할을 한다.
list(zip([1,2,3],[4,5,6]))
[(1,4),(2,5),(3,6)]
#이런식으로 첫번째 값, 두번째 값끼리 묶어주는 역할을 한다.
# 개수가 안맞으면, 맞는데까지만 묶어준다.
tuple
생성방법: (), tuple(). tuple(iterable) list와 비슷하지만 tuple에 저장된 값은 변경할 수 없다. numbers= (1,3,5,7) 일 때, numbers[0]=10 시도해보면 에러가 발생한다.
소괄호()안에 어떻게 입력하냐에 따라 우선순위 연산자 혹은 튜플이 된다.
tuple1 = (1 + 3) # 우선순위
tuple2 = (1 + 3,)# 튜플
tuple3 = (3)# 우선순위
tuple4 = (3,)# 튜플
즉, 콤마(,)를 쓰냐 안쓰냐에 따라 정해진다.
set
중복을 허용하지 않는 데이터의 집합 list/tuple의 중복을 제거할 때 유용하다.
set_numbers={1,3,4,5,1,4,3,1} 중괄호{}를 사용하여, 내용 중 중복이 있으면 제거
set_numbers
{1,3,4,5}
list_numbers = [1,1,2,1,1,2,2,3,1,2,3]
list_numbers = list(set(list_numbers)) set함수를 이용해 중복을 제거하고 다시 list함수를 사용하여 리스트화
list_numbers
[1,2,3]
합, 교, 차, 여집합 사용하기
set_numbers1 = {1,3,4,5,1,4,3,1}
set_numbers2 = {1,3,4,11,13,14,15,11,14,13,11}
print(set_numbers1 - set_numbers2) 차집합
print(set_numbers1 + set_numbers2) 합집합
print(set_numbers1 & set_numbers2) 교집합
print(set_numbers1 ^ set_numbers2) 여집합
사전형 (dict)
- key와 value의 쌍으로 구성된 집합
- key 중복을 허용하지 않음.
- 중괄호 내에 콜론 (:)으로 key/value를 구분 dict_values = {‘blue’:10, ‘yellow’:3, ‘blue’:9, ‘red’:7}
- in 연산자로 멤버쉽 체크 지원 (Key의 등록 여부)
- 순회(for) 시에는 key 목록만 순회
- 멤버함수
- .keys(): key 목록
- .values(): value 목록
- .items(): (key,value) 목록