Действительно ли возможно реализовать Python для цикла диапазона без переменной итератора?

Вы не должны $emit event.target.value, это значение флажка, это не логическое значение. Если вы хотите определить, является ли флажок обновлением (быть истинным или ложным) или нет, вам следует $emit event.target.checked точно так же, как сказал fstep.

176
задан 3 revs, 2 users 57% 29 July 2017 в 13:50
поделиться

7 ответов

Сверху моей головы, нет.

Я думаю, лучшее, что вы могли бы сделать, это что-то вроде этого:

def loop(f,n):
    for i in xrange(n): f()

loop(lambda: <insert expression here>, 5)

Но я думаю, что вы можете просто жить с дополнительным Переменная i .

Здесь можно использовать переменную _ , которая на самом деле является просто другой переменной.

for _ in range(n):
    do_something()

Обратите внимание, что _ назначается последней результат, который возвращается в интерактивном сеансе Python:

>>> 1+2
3
>>> _
3

По этой причине я бы не использовал его таким образом. Я не знаю ни одной идиомы, упомянутой Райаном. Это может испортить ваш интерпретатор.

>>> for _ in xrange(10): pass
...
>>> _
9
>>> 1+2
3
>>> _
9

И согласно грамматике Python , это допустимое имя переменной:

identifier ::= (letter|"_") (letter | digit | "_")*
97
ответ дан 23 November 2019 в 20:23
поделиться

Возможно, вы ищете

for _ in itertools.repeat(None, times): ...

, это самый быстрый способ повторения раз раз в Python.

69
ответ дан 23 November 2019 в 20:23
поделиться

Возможно, ответ будет зависеть от того, с какой проблемой вы столкнулись при использовании итератора? можно использовать

i = 100
while i:
    print i
    i-=1

или

def loop(N, doSomething):
    if not N:
        return
    print doSomething(N)
    loop(N-1, doSomething)

loop(100, lambda a:a)

, но, честно говоря, я не вижу смысла в использовании таких подходов

2
ответ дан 23 November 2019 в 20:23
поделиться

Общая идиома присвоения значению, которое не используется, - дать ему имя _ .

for _ in range(times):
    do_stuff()
56
ответ дан 23 November 2019 в 20:23
поделиться

Все, кто предлагает вам использовать _, не говорят о том, что _ часто используется как ярлык для одна из функций gettext , поэтому, если вы хотите, чтобы ваше программное обеспечение было доступно более чем на одном языке, лучше избегать его использования в других целях.

import gettext
gettext.bindtextdomain('myapplication', '/path/to/my/language/directory')
gettext.textdomain('myapplication')
_ = gettext.gettext
# ...
print _('This is a translatable string.')
18
ответ дан 23 November 2019 в 20:23
поделиться

Вот случайная идея, которая использует (злоупотребляет?) Модель данных ( Ссылка Py3 ).

class Counter(object):
    def __init__(self, val):
        self.val = val

    def __nonzero__(self):
        self.val -= 1
        return self.val >= 0
    __bool__ = __nonzero__  # Alias to Py3 name to make code work unchanged on Py2 and Py3

x = Counter(5)
while x:
    # Do something
    pass

Интересно, есть ли что-то подобное это в стандартных библиотеках?

9
ответ дан 23 November 2019 в 20:23
поделиться
t=0    
for _ in range(10):
    print t
    t = t+1

ВЫВОД:

0
1 
2 
3 
4 
5 
6 
7
8
9
1
ответ дан 23 November 2019 в 20:23
поделиться
Другие вопросы по тегам:

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