🐍 파이썬 스타일 코드 Pythonic Code란?
- 파이썬 특유의 문법을 활용하여 효율적으로 표현한 코드.
📝 Contents
- split & join
- list comprehension
- enumerate & zip
- lambda & map & reduce
- generator
- asterisk
list comprehension
- 기존 List 사용하여 간단히 다른 List를 만드는 기법
- 포괄적인 List, 포함되는 리스트라는 의미로 사용됨
- 파이썬에서 가장 많이 사용되는 기법 중 하나
- 일반적으로 for + append 보다 속도가 빠름
list comprehension을 사용하면 반복문 안에 반복문을 길게 써주지 않고 한줄에 중첩 반복문도 쓸 수 있고, 조건을 함께 써줄 수 있다.
2차원 배열도 쉽게 만들 수 있다.
enumerate & zip
enumerate을 사용하면 list의 index를 동시에 추출할 수 있다.
위와 같이 두 개의 list의 값을 병렬적으로 추출할 때 유용한 zip!
lambda
익명함수인 lambda. 코드의 직관성이 떨어져서(+ 가독성 등) lambda나 reduce는 Python 3부터 사용을 권장하지 않는다. 하지만 코드를 읽다 보면 여전히 많이 보여 알아두는 것이 좋다.
iterable object / generator
iterable object는 Sequence형 자료형에서 데이터를 순서대로 추출하는 object.
내부적으로 __iter__과 __next__가 사용되었다.
generator은 iterable object를 특수한 형태로 사용해주는 함수이며, element가 사용되는 시점에 값을 메모리에 반환한다!
일반적인 iterator는 generator에 반해 훨씬 큰 메모리 용량을 사용한다.
list 타입의 데이터를 반환해주는 함수, 큰 데이터, 파일 데이터 처리 => 🌟 메모리 용량을 아끼려면 generator 사용! + 읽기 쉬운 장점
generator은 list comprehension과 유사한 형태로 [] 대신 ()를 사용하여 생성한다.
function passing arguments - asterisk(*)
함수에 입력되는 arguments의 다양한 형태
1. keyword arguments
함수에 입력되는 parameter의 변수명을 사용해 arguments를 넘겨주는 형태.
위 2번째 예시에서 변수의 순서를 바꿔도 변수명을 명시해주면 결과는 같다.
2. Default arguments
인자에 기본값을 정해주는 형태.
3. Variable-length arguments
📌 가변인자(variable-length)
- 개수가 정해지지 않은 변수를 함수의 parameter로 사용하는 법
- keyword arguments와 함께, argument 추가 가능
- Asterisk(*) 기호를 사용하여 함수의 parameter를 표시
- 가변인자는 오직 한 개만 맨 마지막 parameter 위치에 사용 가능!
일반적으로 *args를 변수명으로 사용하고, 기존 parameter 이후에 나오는 값을 tuple로 저장.
📌 키워드 가변인자(Keyword variable-length)
- Parameter 이름을 따로 지정하지 않고 입력하는 방법
- asterisk(*) 두 개를 사용(**)하여 함수의 parameter를 표시
- 입력된 값은 dict type으로 사용할 수 있음
- 가변인자는 오직 한 개만 기존 가변인자 다음에 사용 (🌟 가변인자 순서 지켜야 함)
**kwargs 키워드 가변인자는 dict type으로 반환된다.
+ asterisk - unpacking a container
예시
a, b, c = ([1, 2], [3, 4], [5, 6])
print(a, b, c) # [1, 2] [3, 4] [5, 6]
data = ([1, 2], [3, 4], [5, 6])
print(*data) # [1, 2] [3, 4] [5, 6]
a, b, c 따로 적어주는 대신 가변인자 사용해 unpacking
def asterisk_test(a, b, c, d):
print(a, b, c, d)
data = {"b":1, "c":2, "d":3}
asterisk_test(10, **data) # 10 1 2 3
**data 키워드 가변인자로 dict type data를 unpacking 해 b, c, d에 각 값을 넣어준다.
for data in zip(*([1, 2], [3, 4], [5, 6])):
print(data)
# (1, 3, 5)
# (2, 4, 6)
각 list의 값을 병렬적으로 추출해주는 zip과 *가변 인자를 같이 사용해 () tuple값으로 추출해주었다.
💡 위 내용은 부스트코스(boostcourse) 인공지능(AI) 기초 다지기 강의를 듣고 공부하며 내용을 정리한 글입니다.
더 자세한 내용은 실제 강의를 들어보길 추천합니다!
'프로그래밍 > Python' 카테고리의 다른 글
[인공지능(AI) 기초 다지기] CSV, WEB, XML, JSON 4가지 데이터 형식 개념 (0) | 2023.01.31 |
---|---|
[인공지능(AI) 기초 다지기] 객체 지향 언어의 이해 (0) | 2023.01.30 |
[인공지능(AI) 기초 다지기] Python 자료 구조(Data Structure) : Stack & Queue, Dict, Collections (0) | 2023.01.19 |
[인공지능(AI) 기초다지기] Python의 문자열(String)과 함수 / Swap, 재귀 함수 (0) | 2023.01.19 |
[인공지능(AI) 기초다지기] Python의 조건문과 반복문, 연습 문제 풀기 (0) | 2023.01.16 |