해당 포스트의 내용 출처는 Naver boostcourse : 인공지능(AI) 기초 다지기 에 있습니다.
split & join
코테 준비에서 input값을 다루거나 output 형태를 맞출 때 자주 썼던 함수였던 걸로 기억한다.
- split()은 기준에 따라 나누는 것이고 join은 반대로 모두 합치는 것.
- 보통 리스트 안의 요소들을 string형태로 통째로 출력하고 싶을 때 많이 썼던 것 같다.
join의 예제코드만 간단하게 쓰고 넘어가도록 한다.
colors = ['red', 'blue', 'green', 'yellow']
result = ''.join(colors)
# 'redbluegreenyellow'
result = '-'.join(colors) # 연결 시 "-"으로 연결
# 'red-blue-green-yellow'
list comprehension
얘도 역시 보통 코테 준비할 때 많이 쓰이는 함수이기도 한다.
- 코드가 간략하게 쓰이기 때문에 보기 편하다는 장점이 있다.
- 또한 일반적으로 for 루프와 append를 쓰는 코드보다 속도가 빠름.
result = []
for i in range(10):
result.append(i)
result = [i for i in range(10)]
2차원 배열도 가능하다.
result = [i+j for i in word1 for j in word 2]
만약 if문 같이 들어가있으면 맨 끝 조건이 있으면 해당 조건만 찍히게 된다. 이것을 filter라고 불린다.
enumerate & zip
- enumerate : list의 element 추출 시 번호를 붙여서 추출 (dict 타입 쓸 때 많이 쓰인다곤 한다)
for i in range(n):
print(i, array[i])
# 이런식으로 코딩을 할 수도 있지만
for idx, num in enumerate(array):
print(idx, num)
# idx : index 값과 num : 리스트의 원소 값을 같이 추출해놓을 수 있다.
# 코드의 간편성
- zip : 두 개의 list의 값을 병렬적으로 추출함
# 보통 x,y 좌표같은 문제를 풀 때 봤던 것 같다.
alist = ['a1', 'a2', 'a3']
blist = ['b1', 'b2', 'b3']
for a, b in zip(alist, blist): # 병렬적으로 값을 추출
print (a,b)
#a1 b1
#a2 b2
#a3 b3
lambda & reduce
(1) lambda
lambda 함수는 파이썬보다 보통 코틀린, 자바, 자바스크립크에서 많이 쓰이긴 했는데..
나 혼자만 파이썬에서 거의 안 쓴건가 싶기도 하다..
- 함수의 이름없이 쓸 수 있는 익명 함수 (python3부터 권장하지 않으나, 여전히 쓰인다고 한다.)
f = lambda x, y: x + y # x, y를 매개변수로 하여, x+y를 더한 것을 반환
print(f(1, 4)) # 1+4 인 값인 5를 반환
f = lambda x: x ** 2 # 제곱한 값을 반환
print(f(3)) # 9를 반환
(2) reduce
- 리스트에 똑같은 함수를 적용해서 통합
from functools import reduce
print(reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]))
# 1+2 = 3, 3+3 = 6, 6+4 = 10, 10+5 = 15
# 결과는 15를 출력
iterable object
- iter과 next 함수를 사용
- iter 함수로 iter 객체 생성 후, next 함수를 사용해서 하나씩 원소를 건너는 느낌
cities = ["Seoul", "Busan","Jeju"]
iter_obj = iter(cities)
print(next(iter_obj))
print(next(iter_obj))
print(next(iter_obj))
next(iter_obj)
generator
# generator를 사용하지 않은 일반 함수
def general_list(value):
result = []
for i in range(value):
result.append(i)
return result
# generator를 사용했을 때
def geneartor_list(value):
result = []
for i in range(value):
yield i
generator를 사용하면 큰 데이터 처리에 유용함. (파일 데이터 처리에도 사용)
가변인자
이 부분은 나도 좀 생소했던 개념..(반성하는 중 ㅠㅠ) 자주 써보도록 하자
def asterisk_test(a, b,*args):
return a+b+sum(args)
print(asterisk_test(1, 2, 3, 4, 5))
# a = 1, b = 2, 나머지 3~5는 args에 들어간다.
키워드 가변인자
- 파라미터 이름을 따로 지정하지 않고 입력한다.
- (*) 를 두 번 사용하여 함수의 파라미터를 표시함
- 입력된 값은 dict type으로 사용할 수 있음
def kwargs_test_1(**kwargs):
print(kwargs)
def kwargs_test_2(**kwargs):
print(kwargs)
print("First value is {first}".format(**kwargs))
print("Second value is {second}".format(**kwargs))
print("Third value is {third}".format(**kwargs))
def kwargs_test_3(one,two,*args,**kwargs):
print(one+two+sum(args))
print(kwargs)
kwargs_test_1(a=1, b=2, c=3)
kwargs_test_2(first=1, second=2, third=3)
kwargs_test_3(3,4,5,6,7,8,9, first=3, second=4, third=5)
unpacking a container
- tuple, dict 등 자료형에 들어가 있는 값을 바깥으로 풀어낸다(unpacking)
- 자료형 앞에 * 하나면 unpacking으로 풀려버린다.
항상 코테 output을 출력할 때 join으로만 생각했었는데, unpacking 기능을 사용해서 쉽게 쓸 수도 있었다.
def asterisk_test(a, b, c, d,):
print(a, b, c, d)
data = {"b":1 , "c":2, "d":3}
asterisk_test(10, **data)
'머신러닝 🤖 > 인공지능(AI) 기초 다지기' 카테고리의 다른 글
1. 파이썬 기초 - Python Data Structure (2) | 2023.10.17 |
---|