Пока у вас есть цикл, у вас также есть return
внутри цикла.На первой итерации списка будет выполнено нажатие return
, и выполнение функции на этом остановится, и будет возвращено только значение в этой строке, которое является строкой, а не предназначенный список.
Вам либо нужнодобавить список к функции для использования в качестве аккумулятора перед возвратом -
def names_function(lst):
names = []
for name in lst:
names.append(f"{name['first']} {name['last']}")
return names
Или использовать понимание списка
def names_function(lst):
return [f"{name['first']} {name['last']}" for name in lst]
names_function(names)
Оба будут выводить
['John Smith', 'Jessie Snow']
Вы также можете заменить return
на yield
, чтобы превратить его в генератор.Чтобы получить все значения, вам нужно выполнить итерацию генератора (или вызвать list
для него)
def names_function(lst):
for name in lst:
yield f"{name['first']} {name['last']}"
list(names_function(names))
, что дает тот же результат
['John Smith', 'Jessie Snow']