[파이썬] 튜플과 람다

2025. 2. 8. 00:24·[파이썬]
728x90

함수 고급

  • 튜플 - 함수와 함께 많이 사용되는 리스트와 비슷한 자료형으로, 한번 결정된 요소는 바꿀 수 없음
  • 람다 - 간단하고 쉽게 함수를 선언하는 방법 - 주로 1회용 함수를 만들때 사용함

튜플

튜플은 리스트와 비슷한 자료형이다

튜플은 한번 결정된 요소(element)를 바꿀 수 없다

(데이터, 데이터, 데이터, ...)
tuple = (10,20,30)
tuple[0] --> 10
tuple[1] --> 20
tuple[2] --> 30

튜플은 리스트와 다르게 한번 정한 요소는 변경이 불가능하기 때문에 변경 시도 시 TypeError 예외가 발생한다

tuple[1] = 40

#TypeError occur
Traceback (most recent call last):
    file "<pyshell#1>", line 1, in <module>
        tuple_test[0] = 1
TypeError: 'tuple' object does not support item assignment

요소를 하나만 가지는 튜플 생성법

(273) -> X
[273] -> X
(273,) -> O #요소를 하나만 가지는 튜플은 요소 뒤에 쉼표(,)를 찍어줘야함

괄호 없는 튜플

파이썬의 튜플과 리스트는 1대1 대응(?) 방식으로 할당이 가능하다

[a,b] = [10,20]
(c,d) = (10,20)

print(a,b,c,d)

#result
10
20
10
20

튜플의 특이한 성질 덕분에 괄호를 생략해도 튜플로 인식할 수 있는 경우는 괄호를 생략 가능하다

tuple_test = 10,20,30,40
print(type(tuple_test))
print(tuple_test)

#result
<class 'tuple'>
(10,20,30,40)

괄호없는 튜플의 성질과 1대1 대응으로 할당이 가능한 성질을 활용한 변수 값 교환

a,b = 10,20
print(a,b)
a,b = b,a
print(a,b)

#result
10 20
20 10

튜플과 함수

튜플은 함수의 리턴에 많이 사용됨 (enumerate() 함수만 봐도 튜플로 반환됨)

함수 리턴에 튜플을 사용하면 여러개의 값을 리턴하고 할당할 수 있기 때문

def tuple_func():
	return (10,20)
	
a,b = tuple_func()
print(a,b)

#result
10,20

튜플도 리스트와 같이 +/* 연산자를 사용할 수 있음

괄호 없이 여러 값을 할당할 수 있는 것은 오직 튜플로만 할 수 있는 일임

람다

기능을 매개변수로 전달하는 코드를 많이 사용하는 요즘을 위해 코드를 좀 더 효율적으로 작성할 수 있도록 파이썬은 람다(lambda)라는 기능을 제공함

함수의 매개변수로 함수 전달하기

  • 콜백 함수(callback function) - 함수의 매개변수에 사용하는 함수
def print_hi():
    print("hi")

def repeat_5_times(func):
    for i in range(5):
        func()
        
print(repeat_5_times(print_hello)) #매개변수로 print_hello()를 전달함

filter() & map()

함수를 매개변수로 사용하는 대표적인 Bulit-in Function으로 map(), filter()가 있음

  • map(함수, 리스트) - 리스트의 요소를 함수에 넣고 리턴값으로 새로운 리스트를 구성해줌
  • filter(함수, 리스트) - 리스트의 요소를 함수에 넣고 리턴 값이 true인 것으로 새로운 리스트를 구성해줌
def power(item):
    return item**2

def under_3(item):
    return item<3

list_input_a = [1,2,3,4,5]

output = map(power,list_input_a)
print("result of map function: ", list(output), output, sep=" ")
print()
output_b = filter(under_3,list_input_a)
print("result of filter function: ", list(output_b), output_b, sep=" ")

#result
result of map function:  [1, 4, 9, 16, 25] <map object at 0x000002246680F2B0>

result of filter function:  [1, 2] <filter object at 0x000002246680F2E0>

<map object>, <filter object>는 제너레이터(generator)라고 부른다.

람다의 개념

람다란 간단한 함수를 쉽게 선언하는 방법

lambda 매개변수 : 리턴해줘야 하는 매개변수를 사용하는 표현식

위 코드의 power()와 under_3()를 lambda로 선언하면 아래와 같이 된다

#power
lambda x : x**2
#under_3
lambda x : x<3

람다는 함수의 매개변수에 바로 넣을 수 있다

map(lambda x:x**2,list_input_a) #함수가 들어가는 인수 자리에 lambda를 넣은 것
728x90

'[파이썬]' 카테고리의 다른 글

[파이썬] 제너레이터와 yield 키워드  (0) 2025.02.08
[파이썬] 파이썬에서 파일 작업하기 (기초)  (0) 2025.02.08
[파이썬] recursion(재귀)와 메모화의 중요성  (0) 2025.02.08
[파이썬] 파이썬 함수와 매개변수  (0) 2025.02.08
[파이썬] for 반복, while 반복과 딕셔너리, 그리고 iterable & iterator  (0) 2025.02.06
'[파이썬]' 카테고리의 다른 글
  • [파이썬] 제너레이터와 yield 키워드
  • [파이썬] 파이썬에서 파일 작업하기 (기초)
  • [파이썬] recursion(재귀)와 메모화의 중요성
  • [파이썬] 파이썬 함수와 매개변수
뽕규의 스케치북
뽕규의 스케치북
공부 열심히 해볼게요
  • 뽕규의 스케치북
    뽕규의 스케치북
    뽕규의 스케치북
  • 전체
    오늘
    어제
  • 링크

    • 파이썬 공식 문서
    • GitHub
    • 분류 전체보기 (37)
      • [파이썬] (17)
      • [데이터 분석] (3)
      • [Git&GitHub] (5)
      • [자료구조 & 알고리즘] (3)
      • [안드로이드 앱] (0)
      • [네트워크] (0)
      • [머신러닝 & 딥러닝] (0)
      • [SQL] (1)
      • [컴퓨터 구조 & 운영체제] (0)
      • [개발자 수학] (0)
      • [노션] (6)
      • [기타] (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 공지사항

  • 인기 글

  • 태그

    깃
    깃허브
    소스트리
    발전
    공부
    수식
    pull
    TODO
    노션
    GIT
    기초
    DB
    github
    함수
    파이썬
    sourcetree
    python
    push
    *
    개념
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
뽕규의 스케치북
[파이썬] 튜플과 람다
상단으로

티스토리툴바