2015-02-03 2 views
2

초급 프로그래머가 있습니다.float가있는 Python xrange

단계 값뿐만 아니라 xrange 범위 내에서 float 값을 사용하는 방법이 있습니까? float로 스테핑하기위한 몇 가지 솔루션을 보았지만 실제로는 한계가 없습니다. 기본적으로

이 같은 스텝 다운 루프를 만들 싶습니다

for x in xrange(5.5,0,0.1): 
    print x 

내가 필요한 단계의 수를 결정하는 단계 값으로 나누어, 내 두 경계 사이의 차이를 결정 생각하고 있었는데 xrange 함수에 이것을 정수 값으로 입력하는 것이 더 쉬운 방법일까요?

감사합니다.

+0

당신은 언제나 발전기를 사용 할 수 있습니다. 원한다면 람다 (lambda)로 지정하십시오. – user3467349

답변

5

당신은 yield를 사용하여 수레에 대한 자신의 "xrange"를 정의 할 수 있습니다. 그것을하기위한 내장 함수가 없기 때문입니다.

>>> def frange(start, stop, step): 
...  x = start 
...  while x < stop: 
...   yield x 
...   x += step 

그런 다음에

>>>for x in frange(5.5,0,0.1): 
... print x 
+0

본 적이 있지만 아직 제너레이터를 이해하지 못했습니다. 그럼에도 불구하고, 이것은 내 배열에서 출력됩니다, 맞습니까? – micuzzo

+1

@micuzzo 아니요, 각 루프의'frange'는'step'을 추가 한 다음 다음 플로트를 반환합니다. 'start'에서'stop'까지 시작됩니다. 그래서,'yield'는 함수 호출을 멈추지 않고'return' 문과 같습니다. – levi

+0

함수를 정의하고 다른 곳에서 연결하는 것에 대한 연결에 감사드립니다. 아직 초급 단계입니다. 이것을 말하면, frange의 정의는 어디에서 호출 될지와 같은 파일에 있어야합니까? @levi – micuzzo

2

range에는 정수 인수가 필요합니다. 하지만 당신은이 작업을 수행 할 수 있습니다 :

for x in xrange(55,0,-1): print x*1.0/10

+1

Python 2.x 버전의 Python 버전은'x/10.'이어야합니다. – tom10

관련 문제