임베디드/라즈베리파이

라즈베리파이 파이썬 자료형

마달랭 2024. 10. 16. 10:19
반응형

개요

파이썬은 type 을 선언하지 않는다.

string, char에 대한 구분이 없다.

마찬가지로 리스트나 튜플같은 자료구조 또한 구체적으로 명시해 주지 않는다.

예를 들어 C++에서 벡터를 사용하기 위해선

vector<int> lst;

 

라고 선언을 해줘야 한다.

하지만 파이썬에서는

 

lst = []

 

이 코드 하나로 lst라는 이름의 리스트를 생성하였다.

 

 

List

파이썬 리스트

  • C의 배열과 다르다.
  • type을 가리지 않는다.
  • 동적 할당
lst = ['Hello', 5, 4.12]

 

이런식으로 리스트 안에 문자열, 정수, 실수를 모두 넣을 수 있다.

 

관련 메서드

  • len() : 길이 구하는 API
  • .append(요소) : 요소를 리스트 가장 뒤에 붙이는 API
lst = []
lst.append(1)
lst.append(2)
print(lst.len()]

# 2

 

 

List comprehension

리스트 에 for, if 를 사용하는 구문

코드를 단순하게 하는 효과가 있지만, 복잡해질 수 있다.

의미가 없는 변수 이름 i 대신, ‘_’ 를 쓰는 게 권장된다.

 

예시 코드

if __name__ == "__main__":
    a = [0 for i in range(10)] # 리스트 a에 0을 10개 넣은채로 초기화 한다.
    print(*a)

    b = [i for i in range(10)] # 리스트 a에 i값을 넣은채로 초기화 한다.
    print(*b)

    c = [0 for _ in range(10)] # 리스트 a에 0을 10개 넣은채로 초기화 한다.
    print(*c)

    d = [i for i in range(10) if i%2==0 ] # 리스트 a에 i값이 짝수일 경우 넣은채로 초기화 한다.
    print(*d)

 

출력

0 0 0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0
0 2 4 6 8

 

 

List를 초기화 하는 세 가지 방법

if __name__ == "__main__":
    a = [0] * 5
    b = [0 for _ in range(5)]
    c = [0, 0, 0, 0, 0]

    print(a)
    print(b)
    print(c)

 

 

Tuple

리스트는 대괄호([])를 사용하여 선언을 했다면 튜플은 소괄호(())를 사용하여 선언한다.

Tuple은 요소의 값을 수정 할 수 없다. 삽입이 가능한 const 형태로 생각하면 된다.

메서드가 적어, 내부 메모리를 적게 사용된다.

소괄호를 사용하지 않아도 튜플타입으로 인식하나 가독성을 위해서는 소괄호를 통해 선언해 주는 것이 좋다.

 

예시 코드

if __name__ == "__main__":
    a = (1,2,3)
    print( a, type(a) )

    b = 1,2,3
    print(b , type(b) )

 

출력

(1, 2, 3) <class 'tuple'>
(1, 2, 3) <class 'tuple'>

 

 

Dictionary

Dictionary는 Key와 value 가 있는 자료형이다.

C++에서의 map을 떠올리면 이해하기 편하다, 하지만 파이썬에선 map이라는 메서드가 따로 있다.

중괄호({})를 통해 선언해 줄 수 있다. 다만 집합 또한 {}를 사용하므로 dict()를 통해 선언해 주는 것이 일반적이다.

 

예시 코드

if __name__ == "__main__":
    a = dict()
    a["HAHA"] = "KKK"
    a['OH'] = 123
    a[1234] = 5678

    print(a , type(a))
    print(a["HAHA"], a["OH"], a[1234])

    b = {"name" : "min", "num" : 123}
    print(b, type(b))
    print(b["name"], b["num"])

 

출력

{'HAHA': 'KKK', 'OH': 123, 1234: 5678} <class 'dict'>
KKK 123 5678
{'name': 'min', 'num': 123} <class 'dict'>
min 123

 

관련 메서드

  • keys() : dictionary의 key 값 모두 출력
  • values() : dictionary의 value 값 모두 출력
  • items() : dictionary의 요소 모두 출력

 

타 언어에서의 dictionary 형태

  • C++ : Unordered_map 이라는 이름으로 존재
  • Java : HashMap 이라는 이름으로 존재
  • C# : Dictionary 라는 이름으로 존재
  • Python : Dictionary

 

Dictionary 사용시주의사항

Key / Value 세트를 생성을 해야만, 사용할 수 있다.

값 대입을 하면, 간단히 Key에 해당하는 공간을 생성할 수 있다.

존재하지 않는 Key를 참조하려고 하면 KeyError가 발생하게 된다.

 

따라서 관련 Key가 딕셔너리에 존재하는지 여부를 알 수 없다면 참조하기 전에 꼭 체크해 주어야 한다.

 

예시 코드

if __name__ == "__main__":
    a = dict()

    s = 'Hello'
    if s not in a:
        a[s] = 0
    else:
        a[s] += 1

    print(a[s])

 

출력

0

 

예시 코드

if __name__ == "__main__":
    a = {'Hello':0}

    s = 'Hello'
    if s not in a:
        a[s] = 0
    else:
        a[s] += 1

    print(a[s])

 

출력

1

 

예시 코드

if __name__ == "__main__":
    a = dict()

    s = 'Hello'
    a[s] += 1

    print(a[s])

 

출력

Traceback (most recent call last):
  File "main.py", line 5, in <module>
    a[s] += 1
KeyError: 'Hello'

 

 

728x90
반응형