관리 메뉴

공부 기록

[WEEK 1] Pythonic code 본문

BOOST CAMP - AI Tech

[WEEK 1] Pythonic code

_JAEJAE_ 2022. 9. 23. 12:07

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
Comments