컴퓨터 & 코딩/Python

[혼공학습단8기][혼공파] 함수, 튜플과 람다

구로그 2022. 8. 8. 18:42
728x90

파이썬은 함수 내부에서 함수 외부에 있는 변수를 참조하지 못한다.

함수 내부에서 함수 외부에 있는 변수라는 것을 설명하기 위한 구문

global 변수 이름

 

p243, 1번 문제: 내가 푼 것 

def flatten(data):
    output = []
    for a in data:
        if type(a) == list:
            for b in a: 
                if type(b) == list:
                    for c in b:
                        output.append(c)
                else:
                    output.append(b)
        else:    
            output.append(a)
    return output



example = [[1, 2, 3,], [4, [5, 6]], 7, [8, 9]]
print("원본:", example)
print("변환:", flatten(example))

교재 정답과 비교해봤는데 내가 매우매우 복잡하게 풀었다는 걸 알 수 있었다 ;;

다음에 재귀함수를 사용해서 다시 풀어봐야 겠다. 

(재귀함수는 입사시험이나 진급시험에 나오기 때문에 잘 알고 있으면 좋다!) 

 


강의 동영상: 

 

 

n! = n * (n - 1)! 를 활용하여 재귀함수를 만드는 게 신기했다! 

 


 

튜플: 리스트와 비슷한 자료형이지만, 한번 결정된 요소는 바꿀 수 없다는 차이점이 있다. 

(데이터, 데이터, 데이터, ...)

# 요소가 하나만 있을 때
(데이터, )

# 괄호가 없는 튜플, 변수의 값 교환하기
a, b = 10, 20
a, b, = b, a

# 함수의 리턴과 튜플
def test():
    return (10, 20)
    
a, b = test()
# a = 10, b = 20 할당된다

변수의 값을 교환할 때 a, b = b, a 라는 코드만으로 값이 바뀐다! 

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

 

 

 

 

 

람다: 매개변수로 함수를 전달하는 것을 좀 더 효율적으로 작성할 수 있게 하는 기능 > 간단한 함수를 쉽게 선언하는 방법

lambda 매개변수: 리턴값

#함수의 매개변수로 함수 전달하기
def power(item):
    return item * item

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

output = map(power, list_input_a)
print(list(output))


#인라인 람다
list_input_a = [1, 2, 3, 4, 5]

output = map(lambda x: x * x, list_input_a)
print(list(output))

람다를 활용하면 다음과 같이 함수를 선언하지않고 매개변수로 바로 넣을 수 있다!

 

 

반응형