Python/python_study

21/1/24 python 추가 공부

민철킹 2021. 1. 25. 18:19

리스트 컴프리헨션(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입니다.

 

반응형