Python/Python 기초

[Python] 기본 데이터 유형(불리안, 컬렉션 자료형)

죵욜이 2024. 11. 17. 22:39

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

연산자 우선순위는 아래와 같다

  1.  not 
  2.  and 
  3.  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}

요약