Boolean
불리안(Boolean)은 참( True ) 또는 거짓( False )을 나타내는 데이터 타입입니다.
boolean 값은 다음과 같을때 생성됩니다.
1. 직접 생성
a = True
b = False
2. 비교 연산의 결과
print(5 > 3) # True
print(2 == 3) # False
3. 논리 연산
print(True and False) # False
print(True or False) # True
print(not True) # False
4. 내장 함수 bool() 로 변환
print(bool(1)) # True
print(bool(0)) # False
print(bool([])) # False
print(bool("Python")) # True
bool() 함수는 값을 불리안으로 변환한다.
다음 값들은 False 로 평가된다.
- None
- 0
- 0.0 (부동소수점 숫자)
- 빈 컨테이너 ( [] , {} , () , set() , range(0) )
- False
이 외 모든 값은 True 로 평가된다.
불리안 과 숫자
불리안 값은 숫자와도 호환됩니다
print(True + 1) # 2
print(False + 5) # 5
- True 는 1 로 간주
- False 는 0 으로 간주
불리안 의 우선순위
print(True or False and False) # True (and가 먼저 평가됨)
print(not True or False) # False
연산자 우선순위는 아래와 같다
- not
- and
- or
컬렉션 자료형 (리스트, 튜플, 딕셔너리, 집합)
컬렉션 자료형은 여러 개의 데이터를 하나의 변수에 저장할 수 있는 데이터 구조를 말한다.
데이터를 관리, 조작, 저장하는 데 이점이 있으며 주요한 컬렉션 자료형은 리스트, 튜플, 딕셔너리, 집합 이 있다.
리스트 ( List ) []
리스트는 여러개의 항목을 순서대로 저장할 수 있는 가변 자료형 이다.
대괄호 ( [] )로 표현하며, 각 요소는 쉼표( , )로 구분한다.
특징
- 순서가 있다
- 가변적이다
- 중복된 요소를 가질 수 있다.
리스트 메서드(method)
# .append(x) - 리스트의 끝에 요소를 추가
list = [1, 2, 3]
list.append(4) # [1, 2, 3, 4]
# .extend(iterable) - 리스트에 다른 iterable(리스트, 튜플, 문자열 등)요소를 추가
list = [1, 2, 3]
list.extend([4, 5]) # [1, 2, 3, 4, 5]
# .insert(i, x) - 특정위치(i) 에 요소를 삽입
list = [1, 2, 3]
list.insert(1, 99) # [1, 99, 2, 3] (인덱스 1에 99 삽입)
# .remove(x) - 첫번째로 나오는 값 x 를 제거 (값이 없다면 오류발생)
list[1, 2, 3, 2]
list.remove(2) # [1, 3, 2]
# .pop([i]) - i번째 요소를 제거하고 반환 (인덱스를 생략하면 마지막 요소 제거)
list = [1, 2, 3, 4]
pop_list = list.pop()
print(list) # 4
print(pop_list) # [1, 2, 3]
# .clear() - 리스트의 모든 요소를 제거
list = [1, 2, 3]
list.clear() # []
# .index(x) - 값 x 의 첫번째 인덱스를 반환, 범위지정 가능 .index(x, start, end)
list = [1, 2, 3]
list.index(2) # 1
# .count(x) - 값 x 가 나타나는 횟수를 반환
list = [1, 2, 3, 2, 2]
list.count(2) # 3
# .sort(key=None, reverse=False) - 오름차순 정렬, reverse=True 일시 내림차순
list = [3, 5, 4, 1, 2]
list.sort() # [1, 2, 3, 4, 5]
list.sort(reverse=True) # [5, 4, 3, 2, 1]
# .reverse() - 리스트의 모든 요소를 역순
list = [1, 2, 3]
list.reverse() # [3, 2, 1]
튜플 ( tuple ) ()
리스트와 유사하지만 수정할 수 없는 불변 자료형이다.
소괄호 () 로 표현한다.
특징
- 순서가 있다
- 불변적이다
- 중복된 요소를 가질 수 있다
- 리스트보다 메모리사용이 적고, 속도가 빠르다
- 읽기 전용 데이터 관리에 적합
쉽게 이해하자면 수정할 수 없는 리스트 = 튜플 이다
# 튜플 생성
my_tuple = (5, 10, 15, 10, 20)
# count 메서드
print(my_tuple.count(10)) # 출력: 2
# index 메서드
print(my_tuple.index(15)) # 출력: 2
# 연결, 반복
new_tuple = my_tuple + (25, 30)
print(new_tuple) # 출력: (5, 10, 15, 10, 20, 25, 30)
repeated_tuple = my_tuple * 2
print(repeated_tuple) # 출력: (5, 10, 15, 10, 20, 5, 10, 15, 10, 20)
# 최댓값, 최솟값, 합계
print(max(my_tuple)) # 출력: 20
print(min(my_tuple)) # 출력: 5
print(sum(my_tuple)) # 출력: 60
딕셔너리 ( Dictionary ) {}
딕셔너리는 키(key) 와 값(value)의 쌍으로 데이터를 저장하는 자료형이다.
중괄호 {} 를 사용하며 key 와 value 는 콜론 : 으로 구분
특징
- key - value 구조
- key 는 고유(unique) : 동일한 키를 중복해서 사용할 수 없다
- key 는 불변 : 숫자, 문자열, 튜플 등 해시가능한 객체만 키로 사용가능
- value 는 가변 : 값으로는 어떤 자료형도 가능 (숫자, 리스트, 다른딕셔너리 등)
딕셔너리
# 딕셔너리 생성
my_dict = {"name": "mohamed salah", "age": 32, "team": "Liverpool"} # 중괄호 {} 사용
my_dict = dict(name = "mohamed salah", age = 32, team = "Liverpool") # dict() 함수 사용
# 키로 값 접근
my_dict = {"name": "mohamed salah", "age": 32, "team": "Liverpool"}
print(my_dict["team"]) # Liverpool
# 값 변경 or 추가
my_dict = {"name": "mohamed salah", "age": 32, "team": "Liverpool"}
my_dict["team"] = "PSG" # 값 변경
my_dict["country"] = "Egypt" # 값 추가
print(my_dict) # {"name": "mohamed salah", "age": 32, "team": "Liverpool", "country": "Egypt"}
# 키 삭제 - del , pop(key)
del my_dict["country"] # {"name": "mohamed salah", "age": 32, "team": "Liverpool"}
my_dict.pop("team") # {"name": "mohamed salah", "age": 32}
# 멤버십 테스트 (in)
print("name" in my_dict) # True
딕셔너리 메서드(method)
- get(key, [default]) : 키에 대응하는 값을 반환, 키가 없다면 기본값 반환 (기본값 : None )
- keys() : 딕셔너리의 모든 키를 반환
- values() : 딕셔너리의 모든 값을 반환
- items() : 키-값 쌍을 튜플로 반환
- update(other_dict) : 다른 딕셔너리를 추가하거나 기존 값을 업데이트
- clear() : 모든 항목 제거
- pop(key, [default]) : 키의 값을 반환하고 삭제, 키가 없다면 기본값 반환(없으면 오류)
- popitem() : 마지막 키-값 쌍을 제거하고 반환
- copy() : 얕은 복사본 반환
집합 ( Set ) {}
중복되지 않는 요소들의 집합을 나타내는 자료형
중괄호 {} 로 표현하며 순서가없고, 중복을 허용하지 않는다
특징
- 순서가 없다
- 가변적이다
- 죽복된 요소를 가질 수 없다
- 빠른 연산 - 중복검사 or 멤버십 테스트 in 에 최적화
집합 생성
# 중괄호 {} 사용
my_set = {1, 2, 3, 4}
# set() 함수 사용
empty_set = set()
# 리스트, 튜플 등 다른 자료형으로부터 변환
my_list = [1, 1, 2, 2, 3]
my_set = set(my_list)
print(my_set) # {1, 2, 3}
집합 주요 연산
연산 | 기호 또는 메서드 | 설명 |
합집합 | | 또는 union() | 두 집합에 포함된 모든 요소 |
교집합 | & 또는 intersection() | 두 집합에 공통으로 포함된 요소 |
차집합 | - 또는 difference() | 첫 번째 집합에는 있지만 두 번째 집합에는 없는 요소 |
대칭차집합 | ^ 또는 symmetric_difference() | 두 집합 중 한쪽에만 있는 요소 |
부분집합 | issubset() | 현재 집합이 다른 집합의 부분집합인지 확인 |
상위집합 | issuperset() | 현재 집합이 다른 집합의 상위집합인지 확인 |
교집합이 없음 | isdisjoint() | 두 집합이 교집합이 없는지 확인 |
집합 메서드
집합 기본 연산
a = {1, 2, 3}
b = {3, 4, 5}
# 합집합
print(a | b) # 출력: {1, 2, 3, 4, 5}
print(a.union(b)) # 출력: {1, 2, 3, 4, 5}
# 교집합
print(a & b) # 출력: {3}
print(a.intersection(b)) # 출력: {3}
# 차집합
print(a - b) # 출력: {1, 2}
print(a.difference(b)) # 출력: {1, 2}
# 대칭차집합
print(a ^ b) # 출력: {1, 2, 4, 5}
print(a.symmetric_difference(b)) # 출력: {1, 2, 4, 5}
요소 추가 및 제거
my_set = {1, 2, 3}
# 요소 추가
my_set.add(4)
print(my_set) # 출력: {1, 2, 3, 4}
# 요소 제거
my_set.remove(3)
print(my_set) # 출력: {1, 2, 4}
# 안전한 제거
my_set.discard(10) # 존재하지 않아도 오류 없음
print(my_set) # 출력: {1, 2, 4}
# 임의의 요소 제거
popped = my_set.pop()
print(popped) # 출력: 1 (임의의 요소)
print(my_set) # 출력: {2, 4}
요약
'Python > Python 기초' 카테고리의 다른 글
[Python] 모듈 ( Module ), 패키지 ( Package ) (4) | 2024.11.27 |
---|---|
[Python] 반복문 ( for, while ) (0) | 2024.11.20 |
[Python] 조건문 ( if , elif , else ) (0) | 2024.11.19 |
[Python] 연산자 (0) | 2024.11.18 |
[Python] 기본 데이터 유형(숫자형, 문자형) (0) | 2024.11.16 |