learning/맨날 까먹는 것들

python 기초2 (컨테이너 타입 - list, tuple, set, dictionary)

noey_ 2021. 7. 11. 15:12

컨테이너 타입에는 리스트, 튜플, 세트, 딕셔너리 타입이 있고 간단하게 요약하자면 다음과 같은 성질이 있다.

- 리스트:[ ] / 순서 O / 변경 가능 / 추가 및 삭제 가능 / 중복 생성 가능

- 튜플: ( ) / 순서 O / 변경 불가 / 추가 및 삭제 불가 / 중복 생성 가능

- 세트: { } / 순서 X / 변경 가능 / 추가 및 삭제 가능 / 집합의 성격이 있음 / 중복 생성 불가

- 딕셔너리: {key: value} / key-value 쌍을 가짐 / 변경 가능 / 추가 및 삭제 가능

 

 리스트 생성 및 아이템 추가

> 아이템 추가 방법

리스트이름.append(추가할 아이템) : 리스트 가장 마지막에 아이템 추가

리스트이름.insert(인덱스 위치, 추가할 아이템) : 지정한 위치에 아이템을 추가 (한 개의 자료만 가능)

리스트이름.extend(추가할 아이템이 들어있는 리스트 이름) :다른 리스트에 있는 아이템을 합침

리스트이름 + 리스트이름 : 여러 리스트에 있는 아이템을 합친 새로운 리스트 생성

 

 리스트 아이템 삭제

> 아이템 삭제 방법

리스트이름.remove(d): 처음 나오는 자료 d를 제거. (중복이 있을 시, 인덱스가 작은 원소 제거)

del 삭제할 아이템 : 지정한 아이템(특정 위치에 있는 아이템, 리스트 자체)을 삭제

리스트이름. clear() : 리스트에 있는 모든 아이템을 삭제

리스트이름.pop(삭제할 값의 인덱스 값): 해당 인덱스의 값을 출력. 이후, 리스트이름 출력 시, 해당 값은 삭제되어 나옴

*인덱스는 다음  python 기초3에서 설명하도록 하겠다.

 

아이템 정렬

> 정렬 방법

리스트이름.sort(옵션) : 옵션에서 설정한대로 정렬. 숫자는 오름차순, 문자열은 사전순으로 정렬

이때, 같은 자료형 즉, 리스트 내부에 다른 자료형이 있으면 안됨.

 

 

튜플은 아이템의 추가, 삭제가 가능한가요?

아니요! 위에서 말했듯이 튜플은 아이템의 편집이 불가능합니다! 따라서 append, remove 같은 기능을 쓰면 에러가 발생합니다.

그래서 튜플 아이템을 추가하고 싶으시다면!

튜플 -> 리스트 -> 리스트의 값 편집 -> 튜플로 다시 변경을 하셔야 합니다.

 

 

세트(set)의 집합 연산

세트이름1 & 세트이름2     or     세트이름1.intersection(세트이름2) : 교집합(두 세트 모두 포함한 아이템을 반환)

세트이름1 | 세트이름2     or     세트이름1.union(세트이름2) : 합집합

세트이름1 - 세트이름2     or     세트이름1.difference(세트이름2) : 차집합(두 세트 간의 차이를 반환)

세트이름1 ^ 세트이름2     or     세트이름1.symmetric_difference(세트이름2) : 대칭 차집합(두 세트의 합집합에서 교집합 부분을 제외한 부분을 반환(두 세트의 대칭 차이가 있는 세트를 반환))

세트이름1.isdisjoint(세트이름2) : 두 세트에 교집합이 있는지 여부 반환

세트이름1.issubset(세트이름2) : 이 세트가 다른 세트에 포함되는지 여부 반환

세트이름1.superset(세트이름2) : 이 세트가 다른 세트를 포함하는지 여부 반환

 

세트 아이템 추가

> 추가 방법

세트이름.add(추가할 아이템): 신규 아이템을 추가

세트이름.update(추가할 아이템이 들어있는 세트 이름): 다른 세트에 있는 아이템을 추가

세트 아이템 삭제

> 리스트와 동일하므로 예시는 생략하겠다.

> 방법

세트이름.remove(삭제할 아이템) : 지정한 값을 가지는 아이템을 삭제

del 세트이름 : 지정한 아이템(특정 위치에 있는 아이템, 세트 자체)을 삭제

세트이름.clear(): 세트에 있는 모든 아이템을 삭제

 

딕셔너리 정리

이 때, key는 자료를 꺼낼 수 있는 도구로 사용되며, key는 변할 수 없는 자료형이다. key를 튜플()로 설정할 수는 있지만 리스트[]로는 설정할 수 없다!

 

시퀀스 자료형 

자료형에는 숫자/문자/리스트 와 논리형이 있는데 문자/리스트를 시퀀스 자료형이라고 한다.

이는 순서가 있는 자료형으로 인덱싱이나 슬라이싱이 가능하고 멤버 조회가 가능하다. 즉, 원소 in 시퀀스 꼴로 in 연산자로 시퀀스 안에 원소가 있는지 확인 할 수 있다는 것이다. 

len 연산자로 시퀀스 안에 원소가 몇개인지 확인이 가능하여 길이를 확인할 수 있고

+ 연산자로 같은 시퀀스 두 개를 연결할 수 있는 연결 연산이 가능하다.

또한 * 연산자로 시퀀스를 반복하는 반복 연산도 가능하다.

 

 

인덱스를 이용해 인덱싱하는 방법과 슬라이싱하는 방법은 뒤에서 다루도록 하겠습니다:)