1. 학습
  2. /
  3. 강의
  4. /
  5. 효율적인 Python 코드 작성

Connected

연습 문제

루프 없이 포켓몬 모으기

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)

지침

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

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