리스트 컴프리헨션(List Comprehension)
-2차원 리스트를 초기화할 때 효과적
-특히, N * M 크기의 2차원 리스트를 한 번에 초기화 해야 할 때 유용.
array = [[0] * m for _ in range(n)]
-만약 2차원 리스트를 초기화할 때 다음과 같이 작성하면 예기치 않은 결과가 나올 수 있다.
array = [[0] * m] * n
==> 전체 리스트 안에 포함된 각 리스트가 모두 같은 객체로 인식된다. (단순한 참조 값 복사)
==> 예로 위와 같이 선언 후, 아래와 같이 출력해보면
array[0][1] = 1
print(array)
==>[[0,1,0],[0,1,0],[0,1,0],[0,1,0],[0,1,0]]이 출력된다. (같은 객체로 인식되기 때문이다.)
언더바(_)
- 파이썬에서는 반복을 수행하되 반복을 위한 변수의 값을 무시하고자 할 때 언더바(_)를 사용합니다.
for _ in range(5):
print('hi')
튜플을 사용하면 좋은 경우
- 서로 다른 성질의 데이터를 묶어서 관리해야 할 때
==> 최단 경로 알고리즘 (비용, 노드 번호)의 형태로 튜플 자료형을 자주 사용
- 데이터의 나열을 해싱(Hashing)의 키 값으로 사용해야 할 때
==> 튜플은 변경이 불가능하므로 리스트와 다르게 키 값으로 사용할 수 있습니다.
- 리스트보다 메모리를 효율적으로 사용해야할 때
사전 자료형(Dictionary)
- 파이썬의 사전 자료형은 해시 테이블을 이용하므로 데이터의 조회 및 수정에 있어서 O(1)의 시간복잡도를 가집니다.
사전 자료형과 집합 자료형의 특징
- 리스트나 튜플은 순서가 있기 때문에 인덱싱을 통해 자료형의 값을 얻을 수 있다.
- 사전 자료형과 집합 자료형은 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없다.
==> 사전의 키(Key) 혹은 집합의 원소(Element)를 이용해 O(1)의 시간 복잡도로 조회
자주 사용되는 표준 입력 방법
- input() 함수는 한 줄의 문자열을 입력 받는 함수.
- map() 함수는 리스트의 모든 원소에 각각 특정한 함수를 적용할 때 사용.
- ex) 공백을 기준으로 구분된 데이터를 입력 받을 때는 다음과 같이 사용
list(map(int, input().split()))
- ex) 공백을 기준으로 구분된 데이터의 개수가 많지 않다면, 단순히 다음과 같이 사용
a, b, c = map(int, input().split())
빠르게 입력 받기
- 사용자로부터 입력을 최대한 빠르게 받아야 하는 경우가 있다.
- 파이썬의 경우 sys 라이브러리에 정의되어 있는 sys.stdin.readline() 메서드를 이용
- 단, 입력 후 엔터(Enter)가 줄 바꿈 기호로 입력되므로 rstrip() 메서드와 함께 사용
import sys
data = sys.stdin.readline().rstrip()
print(data)
f-string
- 파이썬 3.6부터 사용 가능, 문자열 앞에 접두사 'f'를 붙여 사용
- 중괄호 안에 변수명을 기입하여 간단히 문자열과 정수를 함께 넣을 수 있다.(자바스크립트에서 `(백택)과 유사(?))
answer = 7
print(f"정답은 {answer}입니다.")
==> 정답은 7입니다.
'Python > python_study' 카테고리의 다른 글
파이썬을 더 파이썬답게! (0) | 2021.02.26 |
---|---|
파이썬만의 트릭 (for-else문) (0) | 2021.01.21 |
정규표현식 추가 공부(2021/1/14) (0) | 2021.01.20 |
파이썬 공부 시작 - Day 3 (2020/12/27) - 이미지 크롤링 (0) | 2021.01.20 |
파이썬 공부 시작 - Day 2(2020/12/26) (0) | 2021.01.20 |