공부 기록
[WEEK 1] Pythonic code 본문
Pythonic code란 파이썬 스타일의 코딩 기법으로 파이썬 특유의 문법을 활용해 효율적으로 코드를 작성하는 것을 말한다.
1. split & join
- split : 문자열을 기준값으로 나눠서 List 형태로 변환해주는 함수이다. 파라미터로 구분자를 넘겨주면 해당 구분자를 기준으로 문자열을 나눈다. 파라미터로 아무것도 넘기지 않으면 공백을 기분으로 나눈다.
str = "This is python"
splitted_str = str.split()
print(splitted_str) # ['This', 'is', 'python']
- join : 리스트의 문자열을 합치는 함수이다.
이어줄 문자 사이에 특정 문자를 넣고 싶다면 "문자".join(list)와 같은 형태로 작성하면 된다.
splitted_str = ['This', 'is', 'python']
joined_str = ''.join(splitted_str)
print(joined_str) # Thisispython
2. list comprehension
- list comprehension : 리스트를 쉽고 짧게 한 줄로 만들 수 있는 파이썬 문법이다. for + append 보다 속도가 빠르다.
기본 형태는 리스트 이름 = [ 표현식 for 변수 in 반복 가능한 대상] 이다.
특정 조건을 추가하고 싶다면
리스트 명 = [ 표현식 for 변수 in 반복 가능한 대상 if 조건문 ]
리스트 명 = [ true 값 if 조건 else 조건 false 값 for 변수 in 반복 가능한 대상]
과 같이 작성할 수 있다.
arr = [x for x in range(5)] # [0, 1, 2, 3, 4]
arr = [x for x in range(10) if x > 3] # [4, 5, 6, 7, 8, 9]
arr = [x if x % 2 == 0 else -x for x in range(10)] # [0, -1, 2, -3, 4, -5, 6, -7, 8, -9]
3. enumerate & zip
- enumerate : 순서가 있는 자료형을 입력으로 받아 인덱스 값을 포함하는 enumerate객체를 반환하는 함수이다.
보통 for문과 함께 자주 사용된다.
arr = ['a', 'b', 'c', 'd', 'e']
for idx, x in enumerate(arr):
print(idx, x)
# 0 a
# 1 b
# 2 c
# 3 d
# 4 e
- zip : 동일한 개수로 이루어진 자료형을 묶어주는 역할을 하는 함수이다.
arr = ['a', 'b', 'c', 'd']
arr2 = [1, 2, 3, 4]
for x, y in zip(arr, arr2):
print(x, y)
# a 1
# b 2
# c 3
# d 4
4. lambda, map, reduce
- lambda : 함수의 이름없이 함수처럼 사용할 수 있는 익명 함수
f = lambda x, y : x + y
print(f(2, 3)) # 5
- map : 여러 개의 데이터를 지정된 함수로 처리해주는 함수이다.
arr = [1.2, 2.5, 3.7, 4.6]
arr = list(map(int, arr))
print(arr) # [1, 2, 3, 4]
5. reduce
- reduce : 반복 가능한 객체 내에 각 요소를 연산한 뒤 이전 결과들과 누적해서 반환해주는 함수이다.
from functools import reduce
print(reduce(lambda x, y : x + y, [1, 2, 3, 4, 5])) # 15
6. iterable object
- iterable 객체 : 반복 가능한 객체이다. 대표적으로 list, dict, set, tuple, range 등이 있다. iter() 메소드를 사용하여 iterator 객체를 생성할 수 있다.
- iterator 객체 : 값을 차례대로 꺼낼 수 있는 객체이다. __next__() 메소드를 가지며 다음 순서의 item을 반환한다.
모든 iterator는 iterable이지만, 모든 iterable은 iterator가 아니다.
ex. list 객체는 iterable이지만 iterator객체가 아니다.
7. generator
- generator : iterator를 생성해주는 함수이다. 함수 안에서 yield를 사용하면 함수는 generator가 되며 yield에는 값(변수)을 지정한다.
def number_generator():
yield 0
yield 1
yield 2
for i in number_generator():
print(i)
# 0
# 1
# 2
8. function passing arguments
- 함수에 입력되는 arguments의 다양한 형태
1) keyword arguments : 함수에 입력되는 parameter의 변수명을 사용한다.
2) default arguments : parameter의 기본값을 사용한다.
3) variable-length arguments
- 개수가 정해지지 않은 변수를 함수의 parameter로 사용하는 방법이다.
- *args(위치 가변 인자): 기존 parameter 이후에 나오는 값을 튜플로 저장한다.
- **kwargs(키워드 가변 인자) : key(키워드) = value(값)) 형태로 함수를 호출한다. 입력된 값은 dict 형태로 사용할 수 있다.
- asterisk(*) : 단순 곱셈, 제곱 연산, 가변 인자 활용 등에 다양하게 사용된다.
'BOOST CAMP - AI Tech' 카테고리의 다른 글
[WEEK 1] AI Math - 벡터 (0) | 2022.09.25 |
---|---|
[WEEK 1] Object-Oriented Programming (0) | 2022.09.23 |
[WEEK 1] Python - collections 패키지 (0) | 2022.09.22 |
[WEEK 1] 자료구조 (2) | 2022.09.21 |
[WEEK 1] 함수의 호출 방식 (0) | 2022.09.20 |