Devices

【 파이썬 】 자료형

작성자 임베디드코리아 작성일26-02-01 18:25 조회20회 댓글0건
<* 파이썬 자료형 *>
■  파이썬은 다양한 내장 데이터 타입을 제공한다.
■  파이썬에서 자료형은 주로 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}