enumrate -> 리스트에서 요소와 인덱스를 동시에 리턴
for(i, n) in enumerate(arr)
리스트의 인덱스와 요소를 반환한다
zip -> 반복가능한 객체들을 병렬로 순회할때 사용
for i, n in zip(range(len(arr)), arr):
zip을 사용하여 range(len(arr)), arr를 묶고 반환값에 대해서 인덱스와 값을 묶어줍니다.
고차함수
- 함수를 인자로 받을 수 있다: 다른 함수들을 매개변수로 받는 함수.
- 함수를 반환할 수 있다: 실행 결과로 함수를 반환하는 함수.
- 다른 함수로 구성된 함수: 코드 모듈화와 추상화에 도움을 주는 함수.
#map 함수는 리스트나 다른 iterable의 각 요소에 대해 특정 함수를 적용하고, 그 결과를 반환합니다.
list(map(lmbda x: x**2, range(10)))
#filter 함수는 리스트나 다른 iterable의 각 요소에 대해 특정 조건을 검사하고, 그 조건을 만족하는 요소만 반환합니다.
list(filter(lambda x: x%2==0,range(10)))
#reduce 함수는 리스트나 다른 iterable의 각 요소를 누적하여 단일 값을 반환합니다.
from functools import reduce
def add(x, y):
return x + y
numbers = [1, 2, 3, 4, 5]
sum_numbers = reduce(add, numbers)
print(sum_numbers) # 출력: 15
map과 람다 그리고 enumerate
numlist=list(map(int,input().split()))
numlist=numlist[::-1]
n=int(input())
print(sum(map((lambda idx, num :num*n**idx), enumerate(numlist))))
2 1 -4 6
1
Traceback (most recent call last):
File "e:\backup\pnu\4-1\ComputerAndProgramming\week11\lab09_re.py", line 4, in <module>
print(sum(map((lambda idx, num :num*n**idx), enumerate(numlist))))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: <lambda>() missing 1 required positional argument: 'num
map 함수가 여러 인자를 사용하는 lambda 함수를 지원하지 않기 때문입니다. map 함수는 각 요소를 반복 가능한 객체로 전달하는데, enumerate(numlist)는 (index, value) 튜플을 생성하고, lambda 함수는 이 튜플을 해체하지 못합니다.
따라서, enumerate(numlist)의 결과를 lambda 함수에서 직접 해체하는 방식으로 수정해야 합니다.
'Python' 카테고리의 다른 글
EXCEPTION (0) | 2024.06.10 |
---|---|
Class (0) | 2024.06.10 |
list comprehension (1) | 2024.06.09 |
Recursion (0) | 2024.06.07 |