[Python]자주 쓰이지만 아직 안 익은 기능들 모음
참고 책
데이터 과학을 위한 파이썬 프로그래밍 - 최성철 저
'파이썬 스타일 코드' 쪽 내용
모든 내용을 철저하게 적었다기보단
내가 잘 안 써서 익숙하지 않은 부분들이나 '역시 중요하지!'한 것들 위주로만 작성했다.
내용 작성이 안 된 부분은 적당히 이해했기 때문에
구글링할 키워드 기억용으로 적어둔 것.
1. map, reduce, lambda
( * map 에서 필터링 기능(=if 문 이용)을 쓸 때는 if-else로 써서 아닌 경우도 직접 적어주어야 한다.)
예시.
맵 함수로 할 수는 있지만 이 경우는 list comprehension이 더 간단
맵 함수 | 리스트 컴프리헨션 |
list(map(lambda x : x ** 2 if x % 2 == 0 else x, ex)) | [ x**2 if x % 2 == 0 else x for in ex] |
데이터 엔지니어링에서 쓰이는 그 맵리듀스 말이다.
알아두면 나중에 그 내용 배울 때 이해가 빠르겠지?
2. collections 모듈-orderedDictionary, …
List comprehension, … : 중첩 반복문, 이차원 리스트, 필터링, …. (용법)
( * 필터링 : if 문 이용-일반, 중첩 반복문으로 쓰는 게 좋은 듯 )
3. asterisk 사용
( * 가변인수 : **kwargs ( a = 1, b = 2, c = 3 )와 *args( 1, 2, 3) )
( * 언패킹 기능도 있음, 별 하나 * 일 땐 리스트, 튜플 같은 자료구조 언패킹, 별 둘 *일 땐 딕셔너리 언패킹)
a, b, c = ([1,2], [3,4] [5,6])
print(a, b, c)
# [1,2], [3,4] [5,6]
data = ([1,2], [3,4] [5,6])
print(data)
# [1,2], [3,4] [5,6]
data = ([1,2], [3,4] [5,6])
print(data)
# ([1,2], [3,4] [5,6])
print(*data)
# [1,2], [3,4] [5,6]
4. 언패킹 기능
for data in zip(*[[1,2], [3,4] [5,6]]):
print(data)
# (1, 3, 5)
# (2, 4, 6)
*[[1,2], [3,4] [5,6]] ← 이 부분이
처음엔 이해 안 됐는데
data_list = [[1,2], [3,4] [5,6]]
라고 생각하면
for data in zip([1,2], [3,4] [5,6])
이것과 같기 때문에
저런 답이 나온다.
(이유-언패킹 기능)
4. zip 함수
1개 이상의 리스트값이 같은 인덱스에 있을 대 병렬로 묶는 함수.
묶어서 나오는 원소들은 튜플 형태이다.
벡터 연산이 가능하다.
enumerate랑도 잘 쓰인다.
(* enumerate : iterable 내 데이터 인덱스 순서대로 출력해주는 함수)
5. 문자열 관련 함수
.join
.split
.strip
알고리즘 문제풀 때도 잘 쓰인다. 쏠쏠.
6. 선형대수 쪽에도 적용 가능
* "선형대수" 하면, 벡터, 행렬을 떠올리자
1) 벡터 표현
리스트, 튜플, 딕셔너리
* 리스트-일단 그냥 담아
* 튜플-담은 내용이 변하면 안 돼
* 딕셔너리-데이터의 설명도 담아
2) 참 거짓 판별 ⇢ 이유: 동치행렬 찾을 때 씀.
all(), any()
( * all() : 전부 True 일 때 True, any() : 하나라도 True일 때 True)
수학적인 쓰임이므로 복잡한 예시를 모두 이해할 필요는 없다고 생각했다.
다만 이런 파이썬의 자료형과 함수를 이용해 선형대수 계산에도 쓰인다는 게 흥미로웠다.