03 list, tuple, dictionary 정리

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) 목록