파이썬 기초 문법_#1. 자료형
나동빈님의 이코테 2021 강의를 듣고 정리한 파이썬 문법
파이썬의 자료형
정수형, 실수형, 복소수형, 문자열, 리스트, 튜플, 사전 등
실수형
지수표현 방식
- e/E 다음에 오는 수는 10의 지수부
ex. 1e9 = 10의 9제곱유효숫자e지수 = 유효숫자x10지수
- 실수형 데이터로 처리한다
- 임의의 큰 수를 표현할 때 사용됨
- 최단경로 알고리즘에선 도달할 수 없는 노드를 무한(INF)로 설정하는데, 이때 1e9 대입하면 된다
⚠️주의
실수형 표현하는 정확도에 한계가 존재한다. 컴퓨터는 2진수 체계이기 때문에!
➡️ round() 함수 이용하기
ex. 123.456을 소수 셋째자리에서 반올림
round(123.456, 2) (출력: 123.46)
수 자료형의 연산
- 사칙연산과 나머지 연산자 많이 사용됨
- 나누기 연산 시 주의: 나눠진 결과가 실수형
- 나머지 연산자(%), 몫 연산자(//), 거듭제곱 연산자(**)
리스트 자료형 (aka. 배열, 테이블)
✔️ C/Java의 배열(Array), 연결리스트(Arraylist), C++의 vector와 유사하다
초기화
- [] 안에 원소 넣기
- 비어있는 리스트 초기화: list(), []
리스트의 인덱싱과 슬라이싱
인덱싱(indexing)
- 리스트의 특정한 원소에 접근하는 것
- 인덱스값은 양수/음수 모두 가능
- 인덱스값이 음수인 경우) 원소를 거꾸로 탐색하기
슬라이싱(slicing)
- 연속적인 위치를 갖는 원소들 가져오기
- 콜론(:)을 이용하여 시작 인덱스와 끝 인덱스 설정
list comprehension
-
리스트를 초기화하는 방법 중 하나
- 대괄호 안에 조건문, 반복문 적용하여 초기화
ex. 0부터 9까지 수를 포함하는 리스트:
array= [i for i in range(10)] -
2차원 리스트 초기화 시 효과적!
특히 N*M 크기의 2차원 리스트 한번에 초기화 할 때 유용하다!
array = [[0]*m for _ in range(n)] #good
array = [[0]*m]*n #bad
why bad?
- 전체 리스트 안에 포함된 각 리스트가 모두 같은 객체로 인식되기 때문
👀 언더바는 언제 사용되는가?
- 반복을 수행하되 반복을 위한 변수의 값을 무시하고자 할 때 언더바(_) 사용
ex. "Hello World" 다섯 번 출력하기
for _ in range(5):
print("Hello World")
리스트 관련 기타 메소드
- append(): 리스트에 원소를 하나 삽입할 때 사용된다
- sort(): 정렬 (내림차순 정렬 시 reverse=True 옵션 추가)
- reverse(): 리스트의 원소의 순서를 모두 뒤집어 놓는다
- insert(): 특정한 인덱스의 위치에 원소 삽입
- count(): 리스트에서 특정한 값을 가지는 데이터의 개수를 셀 때 사용
- remove(): 특정한 값을 갖는 원소를 제거하는데, 값을 가진 원소가 여러개면 하나만 제거함
- 특정값을 가지는 원소 모두 제거하려면?
a = [1, 2, 3, 4, 5, 5, 5]
remove_set = {3, 5} #집합 자료형
#remove_set에 포함되지 않는 값만을 저장
result = [i for i in a if i not in remove_set]
print(result)
문자열 자료형
- 초기화 시 큰 따옴표(")나 작은 따옴표(') 사용
- 문자열 연산
- 연결 시 +, 여러번 더하려면 *- 인덱싱, 슬라이싱 가능
- 그러나 특정 인덱스값 변경은 불가함
튜플 자료형
리스트와 유사하지만 차이점은:
- 한번 선언된 값은 변경이 불가하다
- 소괄호() 이용
- 리스트에 비해 상대적으로 공간효율적이다
튜플 사용하면 좋은 경우
- 서로 다른 성질의 데이터를 묶어서 관리하는 경우
- 최단 경로 알고리즘에서 (비용, 노드번호) 형태로 묶어 사용
- 데이터의 나열을 해싱의 키값으로 사용해야 할 때
- 리스트보다 메모리를 효율적으로 사용해야 할 때
사전 자료형
- key와 value의 쌍을 데이터로 가지는 자료형
- 변경불가능한 자료형을 key로 가질 수 있음
- 해쉬 테이블을 이용하므로 데이터 조회 및 수정의 시간복잡도가 O(1)
관련 메소드
- 키와 값을 별도로 뽑아내기 위한 메소드
- key 데이터만 뽑아서 리스트로 : keys() 함수- value 데이터만 뽑아서 리스트로 : values() 함수
#초기화 방법 1
data = dict()
data['사과']='Apple'
data['바나나']='Banana'
data['코코넛']='Coconut'
print(data)
#초기화 방법 2
data2 = {
'파인애플': 'pineapple',
'배': 'pear'
}
print(data2)
#특정 키에 매핑되는 값 출력
print(data2['배'])
#키 데이터만 담은 리스트
key_list = data.keys()
#값 데이터만 담은 리스트
value_list = data.values()
print(key_list)
print(value_list)
#리스트 형태로 출력하기(형변환)
print(list(key_list))
print(list(value_list))
#각 키에 따른 값을 하나씩 출력
for key in key_list:
print(data[key])
집합 자료형
- 집합의 특징: 중복X, 순서X
- 특정값의 존재 여부 확인 시 활용! - 리스트/문자열을 이용해서 초기화: set() 함수
- 혹은 중괄호{} 안에 원소를 나열하여 초기화
- 데이터의 조회 및 수정의 시간복잡도가 O(1)
#집합 자료형 초기화 방법 1
data = set([1, 1, 2, 3, 4, 4, 5])
print(data)
#집합 자료형 초기화 방법 2
data = {1, 1, 2, 3, 4, 4, 5}
print(data)
집합자료형의 연산
- 합집합, 교집합, 차집합
a = set([1, 2, 3, 4, 5])
b = set([3, 4, 5, 6, 7])
#합집합
print(a | b)
#교집합
print(a & b)
#차집합
print(a - b)
관련메소드
data = set([1, 2, 3])
print(data)
#새로운 원소 추가
data.add(4)
print(data)
#새로운 원소 여러개 추가
data.update([5, 6])
print(data)
#특정한 값을 갖는 원소 삭제
data.remove(3)
print(data)
사전자료형 & 집합자료형의 특징
- 리스트나 튜플은 순서가 있기 때문에 인덱싱을 이용해서 값을 얻을 수 있음
- 사전자료형, 집합자료형은 순서가 존재하지 않기 때문에 인덱싱으로 값을 얻을 수 없다
- 사전의 key나 집합의 원소로 O(1)의 시간복잡도로 조회
- 사전의 key나 집합의 원소로 변경불가능한 문자열이나 튜플을 이용
Author And Source
이 문제에 관하여(파이썬 기초 문법_#1. 자료형), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dldbdud314/파이썬-기초-문법1.-자료형-part.1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)