В полной мере используйте возможности Python 3 для создания генератора с использованием синтаксиса выражений генератора, а также выполняйте пошаговое добавление четных чисел к третьему параметру range()
.
Это было бы намного проще:
>>> n = 12
>>>
>>> fn = lambda x: (f"{i}," for i in range(0, x + 1, 2))
>>>
>>> ''.join(list(fn(n)))[:-1] + '.'
'0,2,4,6,8,10,12.'
>>>
>>> fn(10)
<generator object <lambda>.<locals>.<genexpr> at 0x107f67660>
То, что похоже на понимание кортежей, на самом деле называется «генератором выражений». Обратите внимание, что в последней строке над интерпретатором указывается, что тип, возвращаемый лямбда-выражением, действительно является генератором.
Еще короче, вы можете сделать это следующим образом:
>>> fn = lambda x: ','.join( (f"{i}" for i in range(0, x + 1, 2)) ) + '.'
>>>
>>> fn(n)
'0,2,4,6,8,10,12.'
>>>
Похоже Возможно, вы были на правильном пути в своем посте с вопросом.
Функция, которая использует ключевое слово yield
, также создает генератор. Так что другой плакат прав в этом отношении.