다음으로 함수 관련하여 편하게 쓸 수 있는 기능들로 튜플과 람다가 있습니다.
1. 튜플
리스트와 비슷한 자료로 리스트와 다른 점으로는 한 번 결정된 요소는 바꿀 수 없다는 것입니다.
a = [ 요소, 요소, 요소 ] -> 리스트
a = ( 요소, 요소, 요소 ) -> 튜플
리스트는 [] 대괄호를 쓰지만 튜플은 소괄호() 를 씁니다.
(소괄호는 튜플 뿐만 아니라 연산식을 만들 때도 씁니다.)
그 안에 여러개의 자료를 넣는데 쉼표로 구분합니다.
리스트와 동일하게 인덱싱을 할 수 있습니다.
튜플과 리스트는 생김과 기능이 비슷하지만 몇 가지 차이가 있습니다.
- 튜플은 값의 변경이 불가능하지만, 리스트는 값의 변경이 가능합니다.
- 튜플은 요소를 하나만 가질 수 있는 리스트와는 달리
한개의 리스트를 가지기 위해서는 공란을 만들어야 합니다.
리스트를 하나만 적을 때에는 값을 int, 즉 숫자를 괄호로 감싼 것으로 이해합니다.
리스트와 튜플은 할당 구문에 있어서 한꺼번에 변수를 여러개를 만들 수 있습니다.
리스트는 대괄호 [ ] 가 없으면 값을 할당하지 못하지만
튜플은 괄호를 생략해도 만들 수 있습니다.
괄호가 없는 값들은 모두 튜플로 인식이 되어요.
구문을 편리하게 작성할 수 있어요.
튜플은 값을 교환할 때 편리하게 쓸 수 있는데
a, b = b,a 라는 코드만으로 값을 바꿀 수 있습니다.
튜플은 주로 함수의 return 에 많이 사용합니다.
함수에서 return 으로 튜플을 사용하면 여러 개의 값을 한꺼번에 출력할 수 있기 때문이에요.
위 캡쳐에 있는 함수를 자세히 보면
def test() : # test() 함수를 만들어줍니다.
return "사랑", "용기", "희망" # 사랑, 용기, 희망이라는 말을 한꺼번에 리턴합니다. 이때 괄호가 없는 튜플이 쓰입니다.
a,b,c = test() -> 각 변수를 test() 함수에 적용을 시켰을 때, 리턴된 값들이 차례로 대응됩니다.
결과값은 !
a
'사랑'
b
'용기'
c
'희망'
여러개의 값을 한꺼번에 출력하는 것으로 중요한 함수 하나를 더 알고 갈게요.
바로 enumerate() 함수 인데요.
for 반복문과 조합해서 유용하게 쓰입니다.
example_list = ["자료 a", "자료b", "자료c"]
위의 리스트가 있을 때 enumerate() 함수는 각 자료별로 몇 번째 인덱스에 있는지를 확인해줍니다.
for i, value in enumerate(example_list):
print(f"{i}번째 요소는 {value}입니다.")
반복문에서 enumerate() 함수를 사용하면 for 과 in 사이에 반복 변수를 두 개 넣을 수 있습니다.
여기에서 i 와 value 의 형태는 (i, value) 튜플에서 괄호를 벗겨낸 형태라고 보시면 됩니다.
2. 람다
다음으로 람다입니다.
람다를 배우기 전에는 효율적으로 작성할 수 있는 몇 가지 개념을 같이 알아볼게요.
매개 변수로 함수 전달하는 것을 알아볼게요.
함수를 두 개 만들었을 때 함수 속에 함수를 쓰는 경우예요.
즉, 매개 변수에 함수를 직접 넣을 때를 말합니다. 이것을 콜백함수라고 해요.
콜백 함수 : 함수에 전달하는 함수 , 자기 자신을 다시 불러오는 함수
call 함수 속에 3번을 반복하는 반복문을 넣어주고
say 함수 속에 안녕하세요를 출력하는 함수를 넣어주었습니다.
그리고 call 함수 속에 say를 불러서 실행했어요.
다음으로 filter() 와 map() 함수를 알아봅니다.
함수를 매개변수로 사용하는 가장 대표적인 표준 함수예요.
map() 함수는 리스트의 요소를 함수에 넣고, 리턴된 값으로 새로운 리스트를 생성하는 함수입니다.
map(함수, 리스트) -> 리스트에 있는 요소들을 함수에 대입해서 새로운 리스트를 만들어요.
filter() 함수는 리스트의 요소를 함수에 넣고 리턴된 값이 True 불값일 경우에만 새로운 리스트를 구성합니다.
filter(불조건문함수, 리스트) -> 리스트에 있는 요소들이 참인 경우 새로운 리스트를 만들어요.
map() 과 filter() 는 형태가 없는 것으로 값 그 자체를 자료로 사용하는 함수입니다.
이를 제너레이터 유형이라고 부릅니다.
제너레이터(generator, 여러개의 값을 필요에 따라 반환yield할 수 있는)는 여러 개의 값을 순차적으로 반환할 수 있는 이터러블(iterable, 반복가능한) 객체를 만드는 유형 입니다.
즉 map은 리스트를 가공한 결과이고, filter는 리스트를 필터링한 결과이며
이것은 모두 이터러블 객체가 됩니다.
# 함수 선언
이렇게 매개변수로 함수를 전달하기 위해 함수 구문을 작성하는 것은 코드가 길어지고 번거로운 것이 있기 때문에
조금 더 간단하게 함수를 선언하기 위해 람다 함수를 만들었습니다.
람다lambda의 형태
lambda 매개변수 : 리턴값
매개변수를 하나 받아서 값을 만드는 방법입니다.
결과값은 동일합니다.
여기까지 튜플과 람다에 대해서 정리해보았습니다!
카카오 데이터 센터가 먹통이 되는 바람에 티스토리도 로그인이 안 되어서 오늘에서야 정리하게 되었네요 ㅠㅜ
다들 열공하세요~
'파이썬 > 파이썬 입문 공부일지' 카테고리의 다른 글
파이썬 공부일지 21. key 키워드 매개변수(min, max) (0) | 2022.10.20 |
---|---|
파이썬 공부일지 20. 파일처리! (0) | 2022.10.19 |
파이썬 공부일지 18. 함수의 활용(재귀함수)! (1) | 2022.10.14 |
파이썬 공부일지 17. 함수 만들기! (0) | 2022.10.14 |
파이썬 공부일지 16. 범위 자료형 range, 조건반복문 while! (1) | 2022.10.13 |