본 포스팅은 혼자 공부하는 파이썬 교재를 보고 정리한 내용입니다.
https://www.hanbit.co.kr/store/books/look.php?p_code=B1681646737
📝목차
1. 범위
2. 문자열, 리스트, 딕셔너리와 관련된 기본 함수
3. 튜플
4. 람다
1. 범위
리스트, 딕셔너리 외에 for 반복문과 함께 많이 사용되는 '범위자료형'이 있다. 특정한 횟수만큼 반복해서 돌리고 싶을 때 for 반복문과 범위를 조합해서 사용한다.
# 첫째, 매개변수에 숫자를 한 개 넣는 방법
# range(A) -> A는 숫자
a = range(5)
print(a)
# 어떤 값들이 해당하는지 보기 위해 list()함수로 출력
print(list(range(10)))
# 매개변수에 숫자를 두 개 넣은 범위
print(list(range(0,5)))
# 매개변수에 숫자를 세 개 넣은 범위
print(list(range(0,10,2))) # 0부터 2씩 증가하면서 (10-1)까지의 정수 범위를 만든다.
2. 문자열, 리스트, 딕셔너리와 관련된 기본 함수
☑️ reversed() 함수로 리스트 뒤집기
리스트에서 요소의 순서를 뒤집고 싶을 때는 reversed() 함수를 사용한다. reversed() 함수의 매개변수에 리스트를 넣으면 리스트를 뒤집을 수 있다.
※ 첫번째 결과에 이터레이터에 대한 설명
for 반복자 in 반복할 수 있는 것 |
여기서 '반복할 수 있는 것'을 프로그래밍 용어로 이터러블(iterable)이라고 합니다. 즉, 이터러블은 내부에 있는 요소들을 차례차례 꺼낼 수 있는 객체를 의미한다. 이터러블 중에서 next()함수를 적용해 하나하나 꺼낼 수 있는 요소를 이터레이터(iteraor) 라고 한다.
위와 같은 이터레이터는 반복문의 매개변수로 전달할 수 있다.
그럼 왜 reverse() 함수는 리스트를 바로 리턴해주지 않고 이터레이터를 리턴해줄까????
--> 메모리 효율성 !!!!! 수백만 개의 요소가 들어 있는 리스트를 복제한 뒤 뒤집어서 리턴하는 것보다 기존에 있던 리스트를 활용해서 작업하는 것이 훨씬 효율적으로 판단하기 때문!
다음 예제를 살펴보자.
코드를 실행하면 "첫 번째 반복문" 부분만 실행되고, "두 번째 반복문"은 전혀 출력이 되지 않는다.
이유는 reversed() 함수의 결과가 제네레이터이기 때문이다. reversed() 함수와 반복문을 조합할 때는 함수의 결과를 여러 번 활용하지 않고 for 구문 내부의 reversed() 함수를 곧바로 사용해야 한다.
☑️ enumerate() 함수와 반복문 조합하기
리스트의 요소를 반복할 때 인덱스가 몇 번째인지 확인해야 하는 경우가 많은데, 파이썬은 이런 코드를 쉽게 작성할 수 있도록 enumerate() 함수를 제공한다.
☑️ 딕셔너리의 items() 함수와 반복문 조합하기
enumerate() 함수와 반복문을 조합해서 사용한 것처럼 딕셔너리는 items() 함수와 함께 사용하면 키와 값을 조합해서 쉽게 반복문을 작성할 수 있다.
☑️ 리스트 내포
- 리스트 이름 = [표현식 for 반복자 in 반복할 수 있는 것]
- if문을 포함한 리스트 내포
3. 튜플
☑️ 튜플이란?
함수와 함께 많이 사용되는 리스트와 비슷한 자료형으로, 리스트와 다른 점은 한 번 결정된 요소는 바꿀 수 없다.
☑️ 튜플 생성 방법
- (데이터, 데이터, 데이터 ....)
☑️ 괄호가 없는 튜플
편리함으로 인해 자주 사용되는 형태이다. 이러한 특이한 구문은 변수의 값을 교환할 때 편리하다.
☑️ 튜플과 함수
- 튜플은 함수의 리턴에 많이 사용된다. 함수의 리턴에 튜플을 사용하면 여러 개의 값을 리턴하고 할당할 수 있기 때문이다.
- 몫과 나머지를 구하는 divmod() 함수는 튜플을 리턴하는 대표적인 함수이다.
4. 람다
☑️ 람다란?
- 간단한 함수를 쉽게 선언하는 방법
- lambda 매개변수 : 리턴값
☑️ filter() 함수와 map() 함수
- filter() 함수는 리스트의 요소를 함수에 넣고 리턴된 값이 True인 것으로, 새로운 리스트를 구성해주는 함수이다.
- map() 함수는 리스트의 요소를 함수에 넣고 리턴된 값으로 새로운 리스트를 구성해주는 함수이다.
- map() 함수와 filter() 함수 모두 첫 번째 매개변수에 함수, 두 번째 매개변수에 리스트를 넣었다.
- 결과로 <map object>, <filter object>가 나오는데 이는 제네레이터이다.
☑️ 람다 사용
매개변수로 함수를 전달하기 위해 함수 구문을 작성하는 것도 번거롭고, 코드 공간 낭비라고 많은 개발자들이 생각해서 '람다' 라는 개념이 생겼다.
- def 키워드로 선언했던 함수를 lambda로 바꾸고, return 키워드를 따로 쓰지 않았다.
※ 람다는 다음과 같이 함수의 매개변수에 곧바로 넣을 수도 있다.
코드가 굉장히 깔끔해진 것을 확인할 수 있다!
'Programming' 카테고리의 다른 글
kaggle : Intermediate Machine Learning ① (1) | 2023.03.18 |
---|---|
Python 백준 1269번 : 대칭 차집합, map(int input().split()) 의미 (0) | 2023.02.14 |
[Python] "혼자 공부하는 파이썬" 정리 ① (리스트, 딕셔너리, 기본구문) (0) | 2023.02.14 |
그래프(Graph)구현 : 인접행렬과 인접리스트 (1) | 2023.02.01 |
Breadth-first search (너비 우선 탐색) 정리 및 구현(C++) (0) | 2023.01.31 |