개요
파이썬은 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'
'임베디드 > 라즈베리파이' 카테고리의 다른 글
라즈베리파이 파이썬 제어문 (0) | 2024.10.16 |
---|---|
라즈베리파이 파이썬 함수 (1) | 2024.10.16 |
라즈베리파이 파이썬 기초 (2) | 2024.10.16 |