Определение моей собственной функции диапазона, которая возвращает список - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь избавиться от этого выражения yeild и оператора '% g' и заменить его оператором return, если у кого-нибудь есть идеи, как это сделать. Кроме того, я пытаюсь сделать так, чтобы это действительно работало как функция, и вы можете передавать в нее переменные и получать диапазон в виде списка, но я тоже не уверен, как это сделать. Любая помощь будет оценена. Я очень запутался в этом.

Код должен действовать как функция диапазона, но возвращает список.

def myRange(start, stop=None, step=None):

    if stop == None:
        stop = start

    if step == None:
        step = 1

    while True:
        if step > 0 and start >= stop:
            break
        elif step < 0 and start <= stop:
            break
        yield ("%g" % start)
        start = start + step

lyst = myRange(0.5, 1.0, 0.1)
for num in lyst:
    print (num)

1 Ответ

0 голосов
/ 29 октября 2019

Вместо использования yield просто создайте переменную для хранения результирующего списка и постоянно добавляйте к нему:

    lst = []
    while True:
        if step > 0 and start >= stop:
            break
        elif step < 0 and start <= stop:
            break
        lst.append("%g" % start)
        start += step
    return lst
...