<* 파이썬 자료형 *>
■ 파이썬은 다양한 내장 데이터 타입을 제공한다.
■ 파이썬에서 자료형은 주로 5개가 있다.
▶ 숫자형(Numernic), 블리언(Boolean), 시퀀스(Sequence Type), 집합(Set), 딕셔너리(Dictionary)
■ 자료형을 활용하여 다양한 데이터를 효과적으로 처리할 수 있다.
[ 1 ] 문자열(Strings)
▶ 파이썬에서 문자열은 텍스트를 나타내는 데 사용되는 자료형이다.
▶ 문자열은 따옴표로 둘러싸여 있으며, 싱글 따옴표(')나 더블 따옴표(") 모두 사용할 수 있다.
▶ 문자열 안에 따옴표를 포함시키고 싶다면, 서로 다른 종류의 따옴표를 사용하거나 백슬래시()를 사용하여 이스케이프할 수 있다.
>> 문자열 생성 예시:
str1 = "안녕하세요"
str2 = 'Python을 배우고 있어요'
str3 = "He said, 'Python is easy to learn.'"
◀ 주요 문자열 함수 ▶
• len(): 문자열의 길이를 반환다.
예)
s = "Python"
print(len(s)) # 출력: 6
• strip(): 문자열 양쪽 끝의 공백이나 특정 문자들을 제거한다.
예)
s = " Python "
print(s.strip()) # 출력: 'Python'
• lower() 및 upper(): 문자열을 소문자나 대문자로 변환한다.
예)
s = "Python"
print(s.lower()) # 출력: 'python'
print(s.upper()) # 출력: 'PYTHON'
• replace(old, new): 문자열 내의 특정 문자나 문자열을 다른 것으로 교체한다.
예)
s = "Hello Python"
print(s.replace("Python", "World")) # 출력: 'Hello World'
• split(delimiter): 문자열을 특정 구분자로 분리하여 리스트를 반환 한다.
예)
s = "apple,banana,cherry"
print(s.split(',')) # 출력: ['apple', 'banana', 'cherry']
• find(sub) 및 index(sub): 부분 문자열의 위치를 찾습니다. find는 문자열이 발견되지 않으면 -1을 반환하고,
index는 발견되지 않으면 오류를 발생시킨다.
예)
s = "Hello"
print(s.find('lo')) # 출력: 3
print(s.index('lo')) # 출력: 3
• format(): 문자열 내의 특정 값을 변수로 대체하여 새 문자열을 생성한다.
예)
s = "My name is {} and I am {} years old."
print(s.format("John", 30)) # 출력: 'My name is John and I am 30 years old.'
[ 2 ] 숫자(Numerics)
◆ 파이썬에서 숫자 데이터 유형은 주로 정수(Integers), 부동 소수점 수(Floats), 복소수(Complex numbers)로 구분된다.
◆ 숫자 유형은 수학적 계산에 사용되며, 파이썬은 기본적인 수학 연산을 지원한다.
◆ 숫자형(Number)은 숫자 형태로 이루어진 자료형이다. 정수, 실수, 8진수, 16진수 등이 여기에 해당한다.
( 1 ) 정수형
- 정수형(integer)은 말 그대로 정수를 뜻하는 자료형이다.
예) 양의 정수, 음의 정수, 숫자 0을 변수 a에 대입
>>> a = 123
>>> a = -178
>>> a = 0
( 2 ) 실수형
- 실수형(floating-point)은 소수점이 포함된 숫자를 말한다.
예) 실수를 변수 a에 대입
>>> a = 1.2
>>> a = -3.45
예) 4.24e10 또는 4.24E10처럼 지수 표현 방식(e와 E 둘 중 어느 것을 사용해도 됨)
>>> a = 4.24E10
>>> a = 4.24e-10
( 3 ) 8진수와 16진수
- 8진수(octal)는 0o 또는 0O(숫자 0 + 알파벳 소문자 o 또는 대문자 O)로 시작한다.
예 )
>>> a = 0o177
>>> print(a)
127
예 ) 16진수(hexadecimal)는 0x로 시작
>>> a = 0x8ff
>>> b = 0xABC
>>> print(b)
2748
( 4 ) 복소수
- 파이썬에서는 복소수를 제공며, complex라는 키워드로 사용할 수 있고 허수 부분에 j를 붙여서 사용할 수 있다.
- 파이썬에서 복소수를 표현하는 방법은 다음과 같이 두 가지가 있다.
예 )
>>> a = 2 + 3j
>>> b=complex(3, -4)
>>> a
(2+3j)
>>> b
(3-4j)
예) 실수부와 허수부를 따로 불러낼 수도 있다.
>>> b.real
3.0
>>> b.imag
-4.0
[ 3 ] 시퀀스(Seguence)
■ 순서가 중요함
■ 인덱싱 가능 : [0],[1],... (인덱스 위치로 개별 원소 식별,참조 가능)
■ 슬라이싱 가능 : [ : ] (시작,끝을 정하여 범위 참조)
■ 문자열(str), 리스트(list), 튜플(tuple), 사용자 정의 클래스가 시퀀스에 속한다.
① 문자열 (String)
▶ 3.x 부터, 기본이 유니코드 임
▶ (str) : 유니 코드
▶ (bytes) : raw unsigned 8-bit (원시 이진 데이터, 또는, 1 바이트 고정 문자)
▶ (bytearray) : bytes와 같으나, 개별 바이트별 변경 가능 (bytes는 바이트별 변경 불가)
② 리스트(List)
▶ 파이썬의 리스트(list)는 여러 값을 순차적으로 저장하는 데이터 구조이다.
▶ 리스트는 대괄호([])로 둘러싸인 쉼표로 구분된 값들의 시퀀스로 정의된다.
▶ 리스트의 각 값에는 인덱스를 통해 접근할 수 있으며, 리스트는 변경 가능한(mutable) 데이터 타입이다.
--> 리스트의 요소를 변경, 추가, 삭제할 수 있음을 의미한다.
▶ 순서가 있는 값의 나열이며, 읽기 쓰기 모두 가능
▶ 리스트는 파이썬 프로그래밍에서 매우 중요한 역할을 하며, 데이터 컬렉션을 다룰 때 자주 사용된다
------< 리스트 생성 예시 >----------------------------
my_list = [1, 2, 3, 4, 5]
names = ['Alice', 'Bob', 'Charlie']
mixed = [1, 'Alice', True, 2.34]
-----------------------------------------------------------
-----<예시 append(element) : 리스트의 끝에 새로운 요소를 추가 >-----
my_list = [1, 2, 3]
my_list.append(4)
print(my_list) # 출력: [1, 2, 3, 4]
--------------------------------------------------------------------------------
------<예시 insert(index, element): 지정된 위치에 요소를 삽입 >-------
my_list = [1, 2, 4]
my_list.insert(2, 3) # 인덱스 2에 3을 삽입
print(my_list) # 출력: [1, 2, 3, 4]
--------------------------------------------------------------------------------
------<예시 remove(element): 리스트에서 첫 번째로 발견되는 특정 요소를 제거 >--
my_list = [1, 2, 3, 4, 3]
my_list.remove(3)
print(my_list) # 출력: [1, 2, 4, 3]
-------------------------------------------------------------------------------------------
------<예시 pop(index=-1): 지정된 인덱스의 요소를 제거하고, 그 요소를 반환한다.
인덱스를 지정하지 않으면, 리스트의 마지막 요소를 제거하고 반환한다. >----
my_list = [1, 2, 3, 4]
removed_element = my_list.pop(2)
print(removed_element) # 출력: 3
print(my_list) # 출력: [1, 2, 4]
---------------------------------------------------------------------------------------------------------------------
------<예시 index(element): 리스트에서 특정 요소의 위치를 찾는다.>--------------
my_list = ['a', 'b', 'c', 'd']
index = my_list.index('b')
print(index) # 출력: 1
-----------------------------------------------------------------------------------------
------<예시 count(element): 리스트에서 특정 요소가 나타나는 횟수를 반환 >---------------
my_list = [1, 2, 2, 3, 3, 3]
count = my_list.count(2)
print(count) # 출력: 2
--------------------------------------------------------------------------------------------------
------<예시 sort(): 리스트의 요소들을 오름차순으로 정렬.
sort(reverse=True)를 사용하면 내림차순으로 정렬 >-----------
my_list = [3, 1, 4, 1, 5]
my_list.sort()
print(my_list) # 출력: [1, 1, 3, 4, 5]
-----------------------------------------------------------------------------------
------<예시 reverse(): 리스트의 요소 순서를 반전 >-------------------
my_list = ['a', 'b', 'c']
my_list.reverse()
print(my_list) # 출력: ['c', 'b', 'a']
----------------------------------------------------------------------------
------<예시 len(list): 리스트의 길이(요소의 수)를 반환 >---------------
my_list = [1, 2, 3, 4, 5]
print(len(my_list)) # 출력: 5
----------------------------------------------------------------------------
③ 튜플 (Tuple)
▶ 파이썬의 튜플(tuple)은 여러 값을 순차적으로 저장하는 또 다른 데이터 구조이다.
▶ 튜플은 대괄호 대신 소괄호()를 사용하여 생성하거나, 괄호 없이 값들을 쉼표로 구분하여 생성할 수도 있다.
▶ 튜플은 리스트와 비슷하지만, 한 번 생성된 후에는 변경할 수 없는(immutable) 중요한 차이점이 있다.
--> 튜플의 요소를 수정, 추가, 삭제할 수 없다.
▶ 리스트와 유사하나, 읽기 전용이며, 속도 빠름
▶ 개별 요소 변경이 불가능 (Immutable)
--> 요소 추가,제거, 튜플 확장,뒤집기,정렬,슬라이싱 등이 안됨
예 ) t = (1,2,3)
튜플 생성 예시:
my_tuple = (1, 2, 3, 4, 5)
names = ('Alice', 'Bob', 'Charlie')
mixed = (1, 'Alice', True, 2.34)
----<예시 len(tuple): 튜플의 길이(요소의 수)를 반환 >------
my_tuple = (1, 2, 3, 4, 5)
print(len(my_tuple)) # 출력: 5
------------------------------------------------------------------
----<예시 index(element): 튜플에서 특정 요소의 위치를 찾음 >----
my_tuple = ('a', 'b', 'c', 'd')
index = my_tuple.index('b')
print(index) # 출력: 1
---------------------------------------------------------------------------
----<예시 count(element): 튜플에서 특정 요소가 나타나는 횟수를 반환 >----
my_tuple = (1, 2, 2, 3, 3, 3)
count = my_tuple.count(2)
print(count) # 출력: 2
-------------------------------------------------------------------------------------
[ 4 ] 딕셔너리(Dictionaries)
■ 파이썬의 딕셔너리(dictionary)는 키(key)와 값(value)의 쌍으로 이루어진 컬렉션이다.
■ 각 키는 딕셔너리 내에서 유일해야 하며, 키를 통해 해당하는 값을 조회할 수 있다.
■ 딕셔너리는 중괄호{}를 사용하여 생성하며, 각 키와 값은 콜론(:)으로 구분된다.
■ 딕셔너리는 변경 가능한(mutable) 데이터 타입이기 때문에, 키-값 쌍을 추가, 수정, 삭제할 수 있다.
--<예시 : 딕셔너리 생성 >--------------------------------
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
print(my_dict)
--------------------------------------------------------------
---<예시 keys(): 딕셔너리에서 모든 키를 조회 >--------------
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
print(my_dict.keys())
--------------------------------------------------------------------
출력:
dict_keys(['name', 'age', 'city'])
---<예시 values(): 딕셔너리에서 모든 값을 조회 >-----------
print(my_dict.values())
-------------------------------------------------------------------
출력:
dict_values(['Alice', 25, 'New York'])
---<예제 items(): 딕셔너리의 모든 키-값 쌍을 조회 >-------
print(my_dict.items())
------------------------------------------------------------------
출력:
dict_items([('name', 'Alice'), ('age', 25), ('city', 'New York')])
---<예제 get(key[, default]): 지정한 키에 해당하는 값을 반환.
키가 딕셔너리에 없는 경우, default를 반환(기본값은 None) >----
print(my_dict.get('name'))
print(my_dict.get('job', 'Unknown'))
--------------------------------------------------------------------------------------------------------
출력:
Alice
Unknown
---<예제 update([other]): 다른 딕셔너리 또는 키-값 쌍의 반복 가능한(iterable) 컬렉션으로부터 키-값 쌍을 추가하거나 업데이트.>--
my_dict.update({'age': 26, 'job': 'Developer'})
print(my_dict)
-------------------------------------------------------------------------------------------------------------
출력:
{'name': 'Alice', 'age': 26, 'city': 'New York', 'job': 'Developer'}
---<예제 pop(key[, default]): 지정한 키에 해당하는 값을 제거하고, 그 값을 반환 >--------------------
키가 딕셔너리에 없는 경우, default를 반환(지정하지 않으면 오류가 발생).
age = my_dict.pop('age')
print(age)
print(my_dict)
----------------------------------------------------------------------------------------------------------------
출력:
26
{'name': 'Alice', 'city': 'New York', 'job': 'Developer'}
---<예제 clear(): 딕셔너리의 모든 키-값 쌍을 제거 >-------------------
my_dict.clear()
print(my_dict)
-----------------------------------------------------------------------------
출력:
{}
[ 5 ] 세트(Sets)
■ 파이썬의 세트(set)는 중복을 허용하지 않는 요소들의 컬렉션이다.
■ 세트는 수학적 집합 개념을 구현한 것으로 중괄호{}를 사용하여 생성한다.
■ 세트는 순서가 정해져 있지 않으므로 인덱스를 통한 접근이 불가능하다.
--> 세트는 중복을 제거하고, 두 세트 간의 수학적 연산(합집합, 교집합, 차집합 등)을 수행하는 데 매우 유용하다.
■ 세트는 중복된 요소를 허용하지 않기 때문에, 중복을 제거하기 위해 자주 사용된다.
■ 두 데이터 컬렉션 간의 관계를 파악하기 위한 수학적 연산을 적용할 때 유용하다.
---<예시>-------------------------------------
my_set = {1, 2, 3, 4, 5}
print(my_set)
-------------------------------------------------
---<예시 add(element): 세트에 요소를 추가 >--------
my_set = {1, 2, 3}
my_set.add(4)
print(my_set)
-----------------------------------------------------------
출력:
{1, 2, 3, 4}
---<예시 update([other]): 세트에 다른 컬렉션(세트, 리스트, 튜플 등)의 요소를 추가>--
my_set = {1, 2, 3}
my_set.update([4, 5, 6])
print(my_set)
-------------------------------------------------------------------------------------------------
출력:
{1, 2, 3, 4, 5, 6}
---<예시 remove(element): 세트에서 특정 요소를 제거합니다. 요소가 세트에 없는 경우 오류를 발생 >---
my_set = {1, 2, 3, 4, 5}
my_set.remove(3)
print(my_set)
---------------------------------------------------------------------------------------------------------------------
출력:
{1, 2, 4, 5}
---<예시 discard(element): 세트에서 특정 요소를 제거 >---------------------
요소가 세트에 없어도 오류를 발생시키지 않는다.
my_set.discard(3)
print(my_set)
------------------------------------------------------------------------------------
출력:
{1, 2, 4, 5}
---<예시 pop(): 세트에서 무작위로 요소를 제거하고 그 요소를 반환>----
세트가 비어 있을 경우 오류를 발생시킴
element = my_set.pop()
print(element)
print(my_set)
---------------------------------------------------------------------------------
---<예시 clear(): 세트의 모든 요소를 제거 >----------------------
my_set.clear()
print(my_set) # 출력: set()
-----------------------------------------------------------------------
---<예시 union([other]): 두 세트의 합집합을 반환>--------------
set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set1.union(set2))
------------------------------------------------------------------------
출력:
{1, 2, 3, 4, 5}
---<예시 intersection([other]): 두 세트의 교집합을 반환>--------
print(set1.intersection(set2))
-----------------------------------------------------------------------
출력:
{3}
---<예시 difference([other]): 두 세트의 차집합을 반환>---------
print(set1.difference(set2))
----------------------------------------------------------------------
출력:
{1, 2}
---<예제 symmetric_difference([other]): 두 세트의 대칭 차집합(합집합에서 교집합을 제외한 부분)을 반환>----
print(set1.symmetric_difference(set2))
-------------------------------------------------------------------------------------------------------------------------
출력:
{1, 2, 4, 5}