enumerate(iterable, start =0)

enumerate는 리스트나 반복 가능한 객체를 (index, value) 형태로 꺼내는 함수 : iterable(리스트, 튜플, 문자열, range 등)

fruits = ["사과", "바나나", "포도"]

for idx, fruit in enumerate(fruits):
    print(idx, fruit)

결과 :
0 사과
1 바나나
2 포도

zip(*ITERABLES)

여러 리스트(반복 가능한 객체)를 묶어서 튜플로 반환

names = ["철수", "영희", "민수"]
scores = [90, 85, 100]

for name, score in zip(names, scores):
    print(name, score)
    
결과 : 
철수 90
영희 85
민수 100

map(function, iterable)

반복 가능한 객체의 모든 요소에 함수 적용

nums = ["1", "2", "3"]
nums_int = list(map(int, nums))  # 문자열을 정수로 변환

print(nums_int)

결과 :
[1, 2, 3]

filter(function, iterable)

반복 가능한 객체에서 조건을 만족하는 요소만 골라 객체로 반환

nums = [1, 2, 3, 4, 5]
even = list(filter(lambda x: x % 2 == 0, nums))  # 짝수만 추출

print(even)

결과 :
[2, 4]

📌 실전 예시

1. map — 리스트 모든 원소에 함수 적용

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

# 각 원소를 제곱
squares = list(map(lambda x: x**2, nums))
print(squares)  # [1, 4, 9, 16, 25]

👉 lambda x: x**2 라는 함수를 따로 def로 만들 필요 없이 한 줄에 정의


2. filter — 조건에 맞는 원소만 걸러내기

nums = [1, 2, 3, 4, 5, 6]

# 짝수만 추출
evens = list(filter(lambda x: x % 2 == 0, nums))
print(evens)  # [2, 4, 6]

👉 lambda x: x % 2 == 0 은 조건 함수 (True/False 반환)


3. sorted — 정렬 기준 지정

words = ["banana", "apple", "cherry"]

# 문자열 길이 기준으로 정렬
sorted_words = sorted(words, key=lambda w: len(w))
print(sorted_words)  # ['apple', 'banana', 'cherry']

👉 lambda w: len(w)가 정렬의 기준 역할


4. max / min — 기준을 주고 최대·최소 구하기

students = [("철수", 85), ("영희", 92), ("민수", 78)]

# 점수가 가장 높은 학생
best = max(students, key=lambda s: s[1])
print(best)  # ('영희', 92)

👉 lambda s: s[1] → 튜플에서 점수(두 번째 값) 기준


✅ 정리