답변:
사용하십시오 range
. Python 2.x에서는 목록을 반환하므로 필요한 것은 다음과 같습니다.
>>> range(11, 17)
[11, 12, 13, 14, 15, 16]
파이썬 3.x에서는 range
이터레이터입니다. 따라서 목록으로 변환해야합니다.
>>> list(range(11, 17))
[11, 12, 13, 14, 15, 16]
참고 : 두 번째 숫자는 배타적입니다. 따라서 여기서는 16+1
=17
편집하다:
에 의해 증가에 대한 질문에 응답하려면 0.5
, 가장 쉬운 옵션은 아마도 사용하는 것입니다 NumPy와의 arange()
과를 .tolist()
:
>>> import numpy as np
>>> np.arange(11, 17, 0.5).tolist()
[11.0, 11.5, 12.0, 12.5, 13.0, 13.5,
14.0, 14.5, 15.0, 15.5, 16.0, 16.5]
step
매개 변수로 1 이상 증가 할 수 있지만 여전히 부동 소수점이 아닙니다. 표준 라이브러리에서는 정확히 그렇게 할 수 없습니다.
찾고있는 것 같습니다 range()
:
>>> x1=11
>>> x2=16
>>> range(x1, x2+1)
[11, 12, 13, 14, 15, 16]
>>> list1 = range(x1, x2+1)
>>> list1
[11, 12, 13, 14, 15, 16]
0.5
대신에 증분하려면 다음 과 1
같이 말합니다.
>>> list2 = [x*0.5 for x in range(2*x1, 2*x2+1)]
>>> list2
[11.0, 11.5, 12.0, 12.5, 13.0, 13.5, 14.0, 14.5, 15.0, 15.5, 16.0]
list
에서는 변수로 사용 합니다.
list
내장 클래스이므로 변수로 사용하는 것은 다소 권장하지 않습니다
float 유형에서 작동하는 함수와 같은 범위를 찾고 있다면 여기에 매우 좋은 기사가 있습니다.
def frange(start, stop, step=1.0):
''' "range()" like function which accept float type'''
i = start
while i < stop:
yield i
i += step
# Generate one element at a time.
# Preferred when you don't need all generated elements at the same time.
# This will save memory.
for i in frange(1.0, 2.0, 0.5):
print i # Use generated element.
# Generate all elements at once.
# Preferred when generated list ought to be small.
print list(frange(1.0, 10.0, 0.5))
산출:
1.0
1.5
[1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5]
파이썬에서 목록 이해를 사용하십시오. 목록에도 16이 필요하므로 x2 + 1을 사용하십시오. 범위 기능은 기능의 상한을 제외합니다.
list = [x 범위 x (x1, x2 + 1)]
range()
목록 이해 사용할 필요
list(range(x1, x2+1))
.
파이썬에서는 매우 쉽게 할 수 있습니다.
start=0
end=10
arr=list(range(start,end+1))
output: arr=[0,1,2,3,4,5,6,7,8,9,10]
또는 주어진 숫자까지 배열을 반환하는 재귀 함수를 만들 수 있습니다.
ar=[]
def diff(start,end):
if start==end:
d.append(end)
return ar
else:
ar.append(end)
return diff(start-1,end)
출력 : ar = [10,9,8,7,6,5,4,3,2,1,0]
가장 우아한 방법은 range
함수 를 사용하는 것이지만이 논리를 다시 만들려면 다음과 같이 할 수 있습니다.
def custom_range(*args):
s = slice(*args)
start, stop, step = s.start, s.stop, s.step
if 0 == step:
raise ValueError("range() arg 3 must not be zero")
i = start
while i < stop if step > 0 else i > stop:
yield i
i += step
>>> [x for x in custom_range(10, 3, -1)]
출력이 생성됩니다.
[10, 9, 8, 7, 6, 5, 4]
@Jared에 의해 전에 표현으로, 가장 좋은 방법은을 사용하는 것 range
또는 numpy.arrange
그러나 내가 코드 흥미를 공유 할 찾을 수 있습니다.
[x for x in range(10, 3, 1)]
첫 번째 인수는 시작, 두 번째 끝 및 마지막 단계입니다. ==> 중지> 시작
위의 모든 답변은 범위가 양수라고 가정합니다. 다음은 선택적 단계 값 (기본값 = 1)을 설정할 수있는 인수가 임의 (양수 또는 음수) 일 수있는 연속 숫자 목록을 반환하는 솔루션입니다.
def any_number_range(a,b,s=1):
""" Generate consecutive values list between two numbers with optional step (default=1)."""
if (a == b):
return a
else:
mx = max(a,b)
mn = min(a,b)
result = []
# inclusive upper limit. If not needed, delete '+1' in the line below
while(mn < mx + 1):
# if step is positive we go from min to max
if s > 0:
result.append(mn)
mn += s
# if step is negative we go from max to min
if s < 0:
result.append(mx)
mx += s
return result
예를 들어, 표준 명령 list(range(1,-3))
은 empty list를 반환 []
하지만이 함수는[-3,-2,-1,0,1]
업데이트 됨 : 이제 단계가 음수 일 수 있습니다. 그의 의견에 대해 @Michael에게 감사드립니다.
i_min = -3, i_max = 1
any_number_range(i_max, i_min))
반환 되기 때문에 개선의 예가 좋을 것 같습니다. [-3,-2,-1,0,1]
그러나 내장 list(range(i_min, i_max + 1))
은 동일한 값을 반환합니다.
list(range(1,-3, -1))