return
завершает функцию, а yield
создает генератор, который выплевывает одно значение за раз:
def numberList(items):
number = 1
for item in items:
yield str((number, item))
number = number + 1
item_lines = '\n'.join(numberList(['red', 'orange', 'yellow', 'green']))
альтернативно return
список:
def numberList(items):
indexeditems = []
number = 1
for item in items:
indexeditems.append(str((number, item)))
number = number + 1
return indexeditems
item_lines = '\n'.join(numberList(['red', 'orange', 'yellow', 'green']))
или просто используйте enumerate
:
item_lines = '\n'.join(str(x) for x in enumerate(['red', 'orange', 'yellow', 'green'], 1)))
В любом случае '\n'.join(str(x) for x in iterable)
берет что-то вроде списка и превращает каждый элемент в строку, как это делает print
, а затем соединяет каждую строку вместе с новой строкой, как это делают несколько операторов print
.