없이 다음을 수행 할 수 i
있습니까?
for i in range(some_number):
# do something
N 번 무언가를하고 반복자가 필요없는 경우.
답변
내 머리 꼭대기에서
나는 당신이 할 수있는 최선의 방법은 다음과 같다고 생각합니다.
def loop(f,n):
for i in xrange(n): f()
loop(lambda: <insert expression here>, 5)
그러나 나는 당신이 여분의 i
변수로 살 수 있다고 생각합니다 .
다음은 _
실제로 다른 변수 인 변수 를 사용하는 옵션 입니다.
for _ in range(n):
do_something()
참고 _
대화 형 파이썬 세션에서 반환 된 마지막 결과를 할당 :
>>> 1+2
3
>>> _
3
이런 이유로 나는 이런 식으로 사용하지 않을 것입니다. Ryan이 언급 한 바와 같이 어떤 관용구도 알지 못합니다. 통역사가 엉망이 될 수 있습니다.
>>> for _ in xrange(10): pass
...
>>> _
9
>>> 1+2
3
>>> _
9
Python grammar 에 따르면 허용되는 변수 이름입니다.
identifier ::= (letter|"_") (letter | digit | "_")*
답변
당신은 찾고 있습니다
for _ in itertools.repeat(None, times): ...
이것은 times
파이썬에서 시간 을 반복하는 가장 빠른 방법 입니다.
답변
사용되지 않는 값에 할당하는 일반적인 관용구는 이름을 지정하는 것 _
입니다.
for _ in range(times):
do_stuff()
답변
_ 사용을 제안하는 모든 사람들이 말하는 것은 아닙니다. _는 gettext 함수 중 하나에 대한 바로 가기로 자주 사용 되므로 소프트웨어를 여러 언어로 사용할 수있게하려면 사용하지 않는 것이 좋습니다. 다른 목적으로.
import gettext
gettext.bindtextdomain('myapplication', '/path/to/my/language/directory')
gettext.textdomain('myapplication')
_ = gettext.gettext
# ...
print _('This is a translatable string.')
답변
다음은 데이터 모델 ( Py3 link ) 을 활용하는 임의의 아이디어입니다 .
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
표준 라이브러리에 이와 같은 것이 있는지 궁금합니다.
답변
_11 (또는 임의의 숫자 또는 다른 잘못된 식별자)을 사용하여 gettext와의 이름 충돌을 방지 할 수 있습니다. 밑줄 + 잘못된 식별자를 사용할 때마다 for 루프에서 사용할 수있는 더미 이름이 나타납니다.
답변
반복자를 사용하는 데 어떤 문제가 있는지에 대한 답이 될 수 있습니까? 사용되었을지도 모른다
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)
그러나 솔직히 나는 그러한 접근법을 사용하는 데 아무런 의미가 없습니다.
