Оператор return завершает работу цикла. Как можно исправить код в моём случае?

Вот мой код:

def SWHL_command():
    response = requests.get("http://www.swhl.ru/tournament/1026071/teams")
    soup = BeautifulSoup(response.content, "lxml")
    commands_names = soup.find_all("a", class_="teams__name-link")
    for commands_name in commands_names:
        c = commands_name.text.strip()
        return c

print(SWHL_command())

Ожидаемый мною результат:

Hockey Dads
Red Tigers
Silk Way Star
Варяг-2

Но на деле результат следующий:

Hockey Dads

Как это исправить?


Ответы (3 шт):

Автор решения: Nonen_Hook

Надо сохранить результат и вернуть по завершению цикла:

def SWHL_command():
    response = requests.get("http://www.swhl.ru/tournament/1026071/teams")
    soup = BeautifulSoup(response.content, "lxml")
    commands_names = soup.find_all("a", class_="teams__name-link")
    res = list()
    for commands_name in commands_names:
        c = commands_name.text.strip()
        res.append(c)
    return res

print(SWHL_command())
→ Ссылка
Автор решения: Cisco

Можно заносить данные в список, а потом уже вытаскивать из него.

my_list = []
for commands_names in commands_names:
    my_list.append(commands_names.text.strip())
return my_list
→ Ссылка
Автор решения: Анонимный Паша

Решение с использованием PEP:

return [x.text.strip() for x in commands_names]
→ Ссылка