8. (Python) code 작성 시 꿀팁

2023. 11. 7. 17:16NAVER AI Tech/Python & AI math

1. split(), ''.join()

- string.split(',') -> 이와 같이 구분자를 설정해줄 수도 있음

- '-'.join(['2023', '11', '01']) -> '2023-01-01' 이와 같이 이어붙일 때 구분자를 지정할 수도 있다.

 

2. list comprehension

- result = [i for i in range(10) if i %2 == 0]

 

3. enumerate(), zip()

for idx, value in enumerate(list):

    print(idx, value)

for value1, value2 in zip(list1, list2):

    print(value1, value2)

 

4. lambda x : x[1], map(int, list), reduce()

- lambda 익명의 함수 -> 최근 크게 권장하지는 않는 구조. 그래도 많이 쓰니까 알아두긴 해야해..

- map(function, element) -> element에 function을 적용한 결과를 반환.

- reduce(lambda x,y : x+y, [1,2,3,4,5]) -> 재귀적으로 output이 다시 x라는 input으로 들어가는 구조. 잘 안쓰는데 알아놓긴 해야해..

 

5. generator

- iter(), next() 함수로 구동.

- 메모리 사용 입장에서 효율적이다. sequence 데이터에 대해서 다음 메모리의 주소만 가지고 있고 전체 데이터를 메모리에 올리지 않음.

- yield를 통해 element 값을 반환해줌(없으면 메모리주소를 반환)

- 대용량 데이터를 처리해야할 때 훨씬 중요함.

 

6. asterisk

 - 개수가 정해지지 않은 변수를 함수의 parameter로 사용하는 방법.

- * 기호를 사용해서 함수의 parameter를 표시

def asterisk_test(a,b,*args):

    print(a+b+sum(args))

asterist_test(1,2,3,4,5) # a = 1, b = 2, args = (3,4,5)

-> 15

 

def kwargs_test(**kwargs):

    print(kwargs)

kwargs_test(first=3, second=4, third=5) # 키워드 가변인자이므로 key=value를 전달해주어야함.

-> {'first':3, 'second':4, 'third':5}

 

def kwargs_test2(a, *args, **kwargs):

    print(a)

    print(args)

    print(kwargs)

kwargs_test2(10, 3,4,5,6, first=3, second=4, third=5) # 이때 키워드 가변인자가 맨 뒤에 와야함

#kwargs_test2(a=10, 3,4,5,6,  first=3, second=4, third=5) # 에러뜬다. 주의할 것

-> 10

-> (3,4,5,6)

-> {'first':3, 'second':4, 'third':5}

가변인자 != 키워드 가변인자

 

* : list unpacking 기능도 함.

def asterisk(a, *args):

    print(a, args)

    print(a, *args)

asterisk(1, (2,3,4,5,6))

-> 1 (2,3,4,5,6)

-> 1,2,3,4,5,6