Создание цикла for без переменной-итератора
В Python циклы for обычно перебирают последовательность элементов с использованием переменной-итератора, например как в примере ниже:
for i in range(some_number): # do something
Однако могут быть сценарии, в которых вам просто нужно выполнить действие несколько раз без необходимости использования переменной-итератора.
Возможные решения
Хотя полностью исключить переменную-итератор невозможно, существуют альтернативы, которые могут добиться аналогичного результата. результат:
1. Лямбда-функция с xrange():
Вы можете использовать лямбда-функцию вместе с функцией xrange(), передавая анонимную функцию в качестве аргумента в loop() :
def loop(f, n): for i in xrange(n): f() loop(lambda:, 5)
2. Использование _ переменной:
Python позволяет использовать специальную переменную _ для отбрасывания значения, присвоенного циклом. Обратите внимание, что _ — это просто еще одна переменная, а не заполнитель для итератора:
for _ in range(n): do_something()
Хотя _ часто используется в качестве идентификатора заполнителей, его не рекомендуется использовать в этом контексте, поскольку он потенциально может присвоить последнее возвращаемое значение интерактивного сеанса Python _.
3. Явное игнорирование итератора:
Вы можете явно игнорировать переменную итератора, используя следующий синтаксис:
for i in range(n): pass # No action taken
Однако это решение неэффективно, поскольку занимает дополнительный слот в области видимости.
Вывод
Пока это так невозможно создать цикл for без переменной-итератора в Python, приведенные выше альтернативы предоставляют методы для достижения аналогичного эффекта, когда это необходимо.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3