Уменьшение количества циклов в Python невозможно?

Интуитивно, ключевое слово возвращает значение из функции, не оставляя его, т.е. в Вашем примере кода это возвращает ток item значение и затем возобновляет цикл. Более официально это используется компилятором для генерации кода для итератор . Итераторы являются функциями тот возврат IEnumerable объекты. MSDN имеет несколько статьи о них.

83
задан Gal 27 November 2010 в 21:46
поделиться

1 ответ

Поздно стороне, но для любого, для которого определяют задачу с созданием их собственного или хочет видеть, как это работало бы, вот функция с добавленной премией реконструкции стартстопных значений на основе желаемого инкремента:

def RANGE(start, stop=None, increment=1):
    if stop is None:
        stop = start
        start = 1

    value_list = sorted([start, stop])

    if increment == 0:
        print('Error! Please enter nonzero increment value!')
    else:
        value_list = sorted([start, stop])
        if increment < 0:
            start = value_list[1]
            stop = value_list[0]
            while start >= stop:
                worker = start
                start += increment
                yield worker
        else:
            start = value_list[0]
            stop = value_list[1]
            while start < stop:
                worker = start
                start += increment
                yield worker

Отрицательный инкремент:

for i in RANGE(1, 10, -1):
    print(i)

Или, с инвертированным стартстопным:

for i in RANGE(10, 1, -1):
    print(i)

Вывод:

10
9
8
7
6
5
4
3
2
1

Регулярный инкремент:

for i in RANGE(1, 10):
    print(i)

Вывод:

1
2
3
4
5
6
7
8
9

Нулевой инкремент:

for i in RANGE(1, 10, 0):
    print(i)

Вывод:

'Error! Please enter nonzero increment value!'
0
ответ дан 24 November 2019 в 08:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: