[Python] Pythonic code

Jeonghyun·2022년 9월 20일
0

Python 이론

목록 보기
2/9
post-thumbnail
  • 파이썬 스타일의 코딩 기법
  • 특유의 문법으로 코드를 효율적으로 표현

1. split & join 함수

xxxx.split()  # 빈칸을 기준으로 문자열 나누기, ()괄호 안에 "," "." 등을 넣어 기준값을 지정

" ".join(list) # 리스트를 " "의 기준값으로 묶음

2. list comprehension

  • 기존 list로 간단히 다른 list를 만드는 기법
  • 일반적으로 for + append 보다 빠름
result = []
for i in range(10):
	result.append(i)
    
👇

result = [i for i in range(10)]
...
result = [i for i in range(10) if i % 2 == 0] # if -> filter의 기능
>>> result = [0, 2, 4, 6, 8]
for i in list_1:
	for j in list_2:
   		...
👇

list_3 = [i + j for i in list_1 for j in list_2]

※ 문장을 2차원 리스트로 만들기

words = 'xxxxx'.split()
new_list = [[i.upper(), i.lower(), len(i)]for i in words]

3. enumerate & zip

enumerate : 리스트를 추출할 때 번호와 같이 추출

for i, v in enumerate(['a','b','c']):
   	print(i, v)
>>>
0 a
1 b
2 c

zip : 두 개의 리스트 값을 병렬적으로 추출

A = (100, 90, 80)
B = (80, 50, 75)
C = (90, 80, 70)
[sum(value) / 3 for value in zip(A, B, C)]
>>>
[90.0, 73.33333333333333, 75.0]

4. lambda & map & reduce funtion

lambda function : 함수의 이름 없이 함수처럼 쓸 수 있는 익명 함수

def f(x, y):
	return x + y
print(f(2,3))

👇
f = lambda x, y : x + y
print(f(2,3))

(lambda x, y : x + y)(10, 50)으로도 표현 가능

- 문법, 테스트, 해석 등이 어려워서 권장하지 않지만 많이 씀

map function : 리스트에 각각 적용해줌

ex = [1, 2, 3, 4, 5]
f = lambda x : x + 5
print(list(map(f, ex))
>>>
[6, 7, 8, 9, 10]

reduce function : map과 달리 리스트에 똑같은 함수를 적용해서 통합 (차례대로 계산하면서 통합)

from functools import reduce
print(reduce(lambda x, y : x + y, [1,2,3,4,5]))
>>>
15

📌 lambda & map & reduce는 간단한 코드로 다양한 기능 제공하지만 직관성이 떨어져서 권장하지 않음 (하지만 여전히 다양한 머신러닝 코드에서 사용 중 -> 알아둬야함!)

5. iterable object & generator

Sequence형 자료형에서 데이터를 순서대로 추츨하는 object

내부적 으로 __iter____next__가 사용됨

memory_address = iter(a_list) # 메모리 주소를 가져옴
next(memory_address)
next(memory_address)
next(memory_address) # 다음 칸의 메모리 주소를 이동

generator : literable object를 특수한 형태로 사용해주는 함수

element가 사용되는 시점에 값을 메모리에 반환
-> yield를 사용해 한번에 하나의 element만 반환
-> 용량이 줄어들음

📌 generator을 언제 쓰는가

  • 큰 용량의 list 타입의 데이터를 반환할 때
  • 파일 데이터를 처리할 때

6. function passing arguments

1) keywords arguments

  • 함수의 parameter를 순서 상관없이 지정해줄 수 있음
    ex) function(y = 3, x = 1, z = 6)

2) default arguments

  • parameter의 default를 정해줘서 입력하지 않아도 default를 입력한 것처럼
    ex)
    def function(var_x, var_y = 3):  
    	return var_x + var_y
    function(3) = 6 -> y를 입력하지 않으면 default로 실행

3) variable-length arguments (가변 인자)

  • 개수가 정해지지 않은 변수를 함수의 parameter로 사용
  • Asterisk(*) 기호를 사용하여 함수의 parameter 표시

variable-length

def function(a, b, *args):
	return a + b + sum(args)
    
print(function(1, 2, 3, 4, 5)) # args는 튜플로 들어감

keywords variable-length

def function(**kargs):
	print(kargs)

function(first = 1, second = 2, third = 3)

📌 순서 : default -> variable-length -> keywords variable-length

Asterisk(*)의 다른 기능 : unpacking ex) print(*["1","2","3"])





[부스트캠프 AI Tech] Week 1 - Day 2

0개의 댓글