수 자료형
데이터는 모든 수로 표현할 수 있으며, 일반적으로 정수와 실수가 많이 사용된다.
정수형
양의 정수, 음의 정수, 0으로 이루어진 정수를 다루는 자료형
실수형
소수점 아래의 데이터를 포함하는 자료형
소수부 또는 정수부가 0인 소수는 0을 생략할 수 있다.
# 소수부가 0일 때
a = 5.
print(a) # 5.0
# 정수부가 0일 때
b = -.7
print(b) # -0.7
E나 e를 이용하여 지수 표현을 할 수 있는데, e 다음에 오는 수는 10의 지수를 의미한다.
1e9
= 10의 9 제곱
컴퓨터 시스템은 수 데이터를 처리할 때 2진수를 이용하는데, 실수의 경우 정확히 표현을 할 수 없다.
만약 0.3 + 0.6
을 한다고 할 때 10진수 체계에서는 0.9
로 딱 떨어지는데
2진수 체계에서는 0.9
를 정확히 표현할 수 있는 방법이 없다고 한다.
(실제로 replit을 통해 파이썬 환경에서 print(0.3 + 0.6)
을 해보면 0.8999999999999999
라는 값이
출력되는 것을 확인했다.)
그래서 소수점 값을 비교해야 할 때 반올림 함수인 round()
를 이용하여 처리한다.
a = 0.3 + 0.6 #0.8999999999999999
if round(a, 4) == 0.9:
print('통과')
else:
print('실패')
보통 소수점 다섯 번째 자리에서 반올림한 결과가 같으면 정답 처리를 하며,
위 소스코드는 '통과'가 출력된다.
수 자료형의 연산
- 사칙연산:
+, =, *, /
- 나누기 연산자(
/
): 나누어진 결과를 실수형으로 처리 - 몫 연산자(
//
): 나누어진 결과의 몫을 반환 - 나머지 연산자(
%
): 나누어진 결과의 나머지를 반환 - 거듭제곱 연산자(
**
):x**y
는 x의 y제곱을 의미
리스트 자료형
여러 개의 데이터를 연속적으로 담아 처리할 때 주로 사용한다.
리스트를 선언할 땐 대괄호([]
)를 사용하거나 list()
를 사용한다.
만약 n개의 모든 값이 0인 1차원 리스트를 초기화할 땐 아래 소스코드처럼 간단하게 초기화할 수 있다.
n = 3
a = [0] * 3
print(a) #[0, 0, 0]
자바스크립트를 사용해 온 나는 [0] * 3
을 봤을 때 굉장히 놀랐다. 이렇게 초기화할 수 있다니...
슬라이싱
리스트에서 연속적인 위치를 갖는 원소들을 가져와야 할 때 사용한다.
대괄호 안에 콜론(:
)을 사용하여 시작 인덱스, 끝 인덱스를 설정하면 된다.
만약 리스트에서 두 번째부터 네 번째까지의 데이터를 가져오고 싶다면 아래 소스코드처럼 코드를 작성할 수 있다.
a = [1,2,3,4,5,6,7,8,9]
print(a[1:4]) #[2, 3, 4]
이때 인덱스는 0부터 시작하며 끝 인덱스는 -1
을 뺀 인덱스까지 가져오게 되는 점을 알아둬야 한다!
컴프리헨션
리스트를 초기화하는 방법 중 하나이며 대괄호 안에 조건문과 반복문을 넣는 방식으로 리스트를 초기화할 수 있다.
#컴프리헨션 이용 전
array = []
for i in range(20):
if i % 2 == 1:
array.append(i)
#컴프리헨션 이용
a = [i for i in range(20) if i % 2 == 1]
print(array) #[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
print(a) #[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
다트에서 배열 안에 반복문 또는 조건문을 넣어서 반복하여 원소를 추가하거나,
조건을 통과하면 리스트에 포함시키는 Collection for
, Collection if
가 생각났다. [글 확인하기]
그렇지만 다트보다 가독성이 떨어져 처음엔 이해가 잘 안 됐는데, 먼저 조건문 또는 반복문을 통해 추가할 원소의 변수를 맨 앞에 작성하고
뒤에 조건문 또는 반복문을 쓰는 것임을 깨닫고 이해를 했다.
컴프리헨션은 특히 특정한 크기를 가지는 2차원 리스트를 초기화할 때 이용하면 편리하다.
n = 3
m = 4
array = [[0] * m for _ in range(n)]
print(array) #[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
메서드
- append(값): 리스트에 원소를 하나 추가할 때 사용
- insert(인덱스, 값): 특정 인덱스 위치에 원소를 추가할 때 사용
- remove(값): 특정 값을 갖는 원소를 제거할 때 사용 (여러 개일 시 하나만 제거된다.)
- count(값): 리스트에서 특정 값을 가지는 데이터의 개수를 셀 때 사용
- sort(): 오름차순으로 정렬할 때 사용
- sort(reverse = True): 내림차순으로 정렬할 때 사용
- reverse(): 리스트의 원소 순서를 모두 거꾸로 뒤집을 때 사용
문자열 자료형
문자열은 자바스크립트와 크게 다른 점이 없어 보여서 기본적인 내용은 제외하였고,
다른 점이 하나 보여서 이 부분은 남겨두려고 한다!
문자열을 반복할 때 자바스크립트에서는 'a' * 3
을 하면 NaN
이 반환된다.
하지만 파이썬에서는 문자열이 반복되어 aaa
가 반환된다.
튜플 자료형
리스트와 비슷하지만
- 한 번 선언된 값을 변경할 수 없고,
- 리스트는 대괄호를 사용하지만, 튜플은 소괄호(
()
)를 사용한다.
는 차이점이 있다.
변경하면 안 되는 값이 변경되는 것을 방지할 수 있으며 리스트에 비해 상대적으로 공간 효율이 높다고 한다.
사전(dictionary) 자료형
키와 값의 쌍을 데이터로 가지는 자료형이다.
리스트와 튜플은 값을 순차적으로 저장한다는 특징이 있는 반면에 사전 자료형은 순서대로 저장하는 게 아니라 키-값 쌍을 저장한다.
data = dict()
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
print(data) #{'사과': 'Apple', '바나나': 'Banana'}
자바스크립트의 object와 비슷해 보인다.
dictionary 안에 찾아야 하는 원소가 있는지 확인할 때는 아래 소스코드처럼 작성할 수 있다.
if '바나나' in data:
print('바나나 데이터가 존재합니다! 바나나 = Banana~')
key 또는 value만 별도로 뽑아내는 방법은 자바스크립트와 비슷하다.
# key만 담은 리스트
data_keys = data.keys()
print(data_keys)
# value만 담은 리스트
data_values = data.values()
print(data_values)
# 리스트를 이용하여 값을 하나씩 출력하기
for value in data_values:
print(value) #Apple #Banana
집합 자료형
파이썬에서 집합은 다음과 같은 특징을 가지고 있다.
- 중복을 허용하지 않는다.
- 순서가 없다.
리스트와 튜플은 순서가 있어 인덱싱을 하면 값을 얻을 수 있지만, 집합은 그렇지 못하다.
또한 키-값 쌍을 이루지 않고 값만 가지고 있기 때문에 dictionary처럼 사용하지 못한다.
집합 자료형은 특정 데이터가 이미 나온 적이 있는지에 대해 확인할 때 유용하다.
초기화하는 방법은 set()
을 사용하거나 중괄호({}
)를 사용하면 된다.
# set() 사용
data = set([1,1,2,2,3,3,4,4,5,6])
print(data) #{1, 2, 3, 4, 5, 6}
# 중괄호 사용
data = {2,2,2,2,3,3,3,3,4}
print(data) #{2, 3, 4}
자바스크립트의 Set()
과 비슷한 역할을 하는 것 같다.
연산
- 합집합:
|
- 교집합:
&
- 차집합:
-
a = set([1,1,2,2,3,3,4,4,5,6])
b = set([2,2,2,2,3,3,3,3,4])
# 합집합
print(a|b) #{1, 2, 3, 4, 5, 6}
# 교집합
print(a&b) #{2, 3, 4}
# 차집합
print(a-b) #{1, 5, 6}
메서드
- add(): 집합 데이터에 값을 추가
- update(): 집합 데이터에 여러 개의 값을 추가
- remove(): 특정 값을 제거
a = set([1,1,2,2,3,3,4,4,5,6])
a.add(9)
print(a) #{1, 2, 3, 4, 5, 6, 9}
a.update([11,12,13])
print(a) #{1, 2, 3, 4, 5, 6, 9, 11, 12, 13}
a.remove(9)
print(a) #{1, 2, 3, 4, 5, 6, 11, 12, 13}
'Study > 파이썬[Python]' 카테고리의 다른 글
파이썬[Python] | 데이터 입출력 방법 (0) | 2023.05.31 |
---|---|
파이썬[Python] | 조건문, 반복문, 함수 (자바스크립트와 다른 점) (0) | 2023.05.27 |
파이썬[Python] 004. 크롤링을 하기 전에.. 라이브러리란? (0) | 2022.03.05 |
파이썬[Python] 003. 크롤링의 정의 (0) | 2022.03.03 |