Как сделать чтобы функция возвращала все элементы при использовании цикла for?

Помогите, как сделать чтобы функция возвращала все элементы при использовании цикла for?

a = ['ad','adwt',3,4,5,6,7]

def get(a):
    for i in a:
        return i

def main():
    print(get(a))

main()

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

Автор решения: Shamus Rezol

Как на счет генераторов? Используйте yield вместо return чтобы функция возвращала генератор.

def get(a):
    for i in a:
        yield i
# get(a)
# <generator object ...>
→ Ссылка
Автор решения: MarianD
a = ['ad','adwt',3,4,5,6,7]

def get(a):
    return '\n'.join([str(i) for i in a])

def main():
    print(get(a))

main()

Вывод:

ad
adwt
3
4
5
6
7

Объяснение:

[str(i) for i in a]

создает список элементов списка a переведенных в строки, и затем

'\n'.join([str(i) for i in a])

соединит все элементы этого списка в одну строку, но с символом '\n' между элементами списка.

Функция print() выведет эту строку — благодаря знаком '\n' - как элементы списка a, строку после строки.


Примечание:

Вместо

[str(i) for i in a]

возможно использовать стандартную функцию map():

map(str, a)
→ Ссылка