시작하기무료로 시작하기

루프 없이 포켓몬 모으기

poke_names에는 720개의 포켓몬이, poke_gens에는 각 포켓몬의 세대가 세션에 로드되어 있습니다.

아래의 for 루프는 1세대 또는 2세대에 속하는 포켓몬을 걸러낸 뒤, 각 포켓몬 이름의 글자 수를 수집합니다:

gen1_gen2_name_lengths_loop = []

for name,gen in zip(poke_names, poke_gens):
    if gen < 3:
        name_length = len(name)
        poke_tuple = (name, name_length)
        gen1_gen2_name_lengths_loop.append(poke_tuple)

이 연습은 강의의 일부입니다

효율적인 Python 코드 작성

강의 보기

연습 안내

  • 위의 for 루프를 리스트 컴프리헨션과 map() 함수로 대체하세요:

    • 리스트 컴프리헨션으로 1세대 또는 2세대에 속하는 포켓몬을 모두 모으고, 이를 gen1_gen2_pokemon에 저장하세요.
    • map() 함수를 사용해 gen1_gen2_pokemon 리스트의 각 포켓몬 이름에 대해 글자 수를 수집하세요. 이 map 객체name_lengths_map에 저장하세요.
    • gen1_gen2_pokemonname_lengths_map을 결합해 gen1_gen2_name_lengths라는 리스트를 만드세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# Collect Pokémon that belong to generation 1 or generation 2
gen1_gen2_pokemon = [name for name,gen in ____(____, ____) if gen < ____]

# Create a map object that stores the name lengths
name_lengths_map = ____(len, ____)

# Combine gen1_gen2_pokemon and name_lengths_map into a list
gen1_gen2_name_lengths = [*____(____, ____)]

print(gen1_gen2_name_lengths_loop[:5])
print(gen1_gen2_name_lengths[:5])
코드 편집 및 실행