range(start, end)에 end가 포함되지 않는 이유는 무엇입니까?
>>> range(1,11)
주다
[1,2,3,4,5,6,7,8,9,10]
1-11은 왜 안 돼?
그들이 무작위로 그렇게 하기로 한 걸까 아니면 내가 보지 못하는 가치가 있는 걸까?
게 이니까.range(0, 10)
결과, 반환하다[0,1,2,3,4,5,6,7,8,9]
10개의 원소는 10개의 원소와 10개의 원소가 들어있습니다.len(range(0, 10))
프로그래머는 0 베이스의 인덱싱을 선호합니다.
또, 다음의 일반적인 코드 스니펫에 대해서도 생각해 주세요.
for i in range(len(li)):
pass
혹시나면알아볼수있나요?range()
까지 len(li)
게게문 제제 ?? ???프로그래머는 명시적으로 1을 빼야 합니다.이것은 프로그래머들이 선호하는 일반적인 트렌드를 따르기도 한다.for(int i = 0; i < 10; i++)
에 걸쳐서for(int i = 0; i <= 9; i++)
.
1 로 시작하는 콜 범위를 자주 설정하는 경우는, 독자적인 함수를 정의할 필요가 있습니다.
>>> def range1(start, end):
... return range(start, end+1)
...
>>> range1(1, 10)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
여기에는 몇 가지 유용한 알고리즘 설명이 있지만, 왜 이렇게 기능하는지에 대한 간단한 '실생활' 추론을 추가하는 것이 도움이 될 수 있다고 생각합니다.이것은 젊은 신참자에게 이 주제를 소개할 때 유용하다고 생각합니다.
'범위(1,10)'와 같은 경우에는 매개변수 쌍이 "시작과 끝"을 나타낸다고 생각하기 때문에 혼란이 발생할 수 있습니다.
그것은 실제로 시작과 "정지"입니다.
이 값이 "종료" 값일 경우 해당 번호가 시퀀스의 최종 엔트리로 포함될 것으로 예상할 수 있습니다.하지만 그것은 끝이 아니다.
다른 사람들은 이 파라미터를 "count"라고 잘못 부르는데, 이는 "range(n)"만 사용하면 당연히 "n"번 반복되기 때문입니다.이 로직은 시작 파라미터를 추가하면 분해됩니다.
그래서 핵심은 그 이름을 기억하는 것이다: "정지"즉, 도달했을 때 반복이 즉시 중지되는 지점입니다.그 이후론 안 돼
따라서 "시작"은 실제로 포함되는 첫 번째 값을 나타내지만 "정지" 값에 도달하면 "그것도" 처리를 계속하지 않고 중단됩니다.
내가 이것을 아이들에게 설명할 때 사용한 비유 중 하나는 아이러니하게도, 그것이 아이들보다 더 잘 행동한다는 것이다!원래 하던 일을 끝내지 않고 바로 멈춥니다. (이것들을 알 수 있습니다; )
또 다른 비유는 차를 운전할 때 정지/양보/'양보' 표지판을 통과하지 않고 차 옆이나 뒤에 놓여 있는 것입니다.엄밀히 말하면 멈출 때도 아직 도달하지 못한 거야'여행 중에 지나온 물건'에는 포함되지 않습니다.
Pythonitos/Pythonitas에게 설명하는데 도움이 되길 바랍니다!
배타적 범위에는 다음과 같은 이점이 있습니다.
★★★★★★★★★★★★★★의 각 range(0,n)
는 길이 입니다.n
.
한 also도.range(0,n)
의 길이를 가지다n
아니라, 이에요.n+1
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
합니다.len()
목록에 10개의 항목이 있습니다x
0에서 9까지입니다. range(len(x))
9.0~9이 되다.
피토닉이 피토닉이 더 하겠죠?for item in x
★★★★★★★★★★★★★★★★★」for index, item in enumerate(x)
for i in range(len(x))
.
그런 으로 작용합니다.foo[1:4]
입니다.foo
(항목 1은 제로베이스 인덱싱으로 인해 실제로는 두 번째 항목임을 유의하십시오).일관성을 유지하기 위해 둘 다 같은 방식으로 작동해야 합니다.
저는 "원하는 첫 번째 숫자, 그리고 원하지 않는 첫 번째 숫자"라고 생각합니다.1-10을 원하시면, 제일 먼저 원하지 않는 번호는 11이 되겠습니다.range(1, 11)
.
하여 1을 호출하는 를 쉽게 쓸 수range()
.
range(a,b)
나눌 수 range(a, x)
★★★★★★★★★★★★★★★★★」range(x, b)
는 '인가', '어느쪽인가', '어느쪽인가', '어느쪽인가', '어느쪽인가', '어느쪽인가', '어느쪽이든', '어느쪽이든',x-1
★★★★★★★★★★★★★★★★★」x+1
는 거의 꽤 하는 중 입니다.l[a:b]
a번째 요소는 포함하지만 b번째 요소는 포함하지 않습니다. ★★★★★★★★★★★★★★★.range
같은 성질을 가진다는 건 꽤 일관성이 있다는 거죠
범위의 길이는 맨 위 값에서 맨 아래 값을 뺀 값입니다.
이것은 다음과 같은 것과 매우 유사합니다.
for (var i = 1; i < 11; i++) {
//i goes from 1 to 10 in here
}
C스타일의 언어로.
또한 Ruby의 범위와 유사합니다.
1...11 #this is a range from 1 to 10
그러나 Ruby는 터미널 값을 포함하기를 원하는 경우가 많다는 것을 인식하고 대체 구문을 제공합니다.
1..10 #this is also a range from 1 to 10
코드를 고려하다
for i in range(10):
print "You'll see this 10 times", i
는 '길이의 '를 수 입니다.y-x
이데올로기 때문에
python docs for range를 읽어보십시오.이 문서는 for-loop 반복을 주요 사용 사례로 간주합니다.
으로는 python(python)입니다.range(n)
n
시간(times)은 배타적인 특성 때문에 인쇄될 때 마지막 값을 제공하지 않습니다. 포함 값을 제공하는 함수를 만들 수 있습니다. 즉, 범위 내에서 언급된 마지막 값도 인쇄됩니다.
def main():
for i in inclusive_range(25):
print(i, sep=" ")
def inclusive_range(*args):
numargs = len(args)
if numargs == 0:
raise TypeError("you need to write at least a value")
elif numargs == 1:
stop = args[0]
start = 0
step = 1
elif numargs == 2:
(start, stop) = args
step = 1
elif numargs == 3:
(start, stop, step) = args
else:
raise TypeError("Inclusive range was expected at most 3 arguments,got {}".format(numargs))
i = start
while i <= stop:
yield i
i += step
if __name__ == "__main__":
main()
range(n)
in python은 0에서 n-1로 반환됩니다.각각,range(1,n)
1 ~ n-1 입니다.따라서 첫 번째 값을 생략하고 마지막 값(n)을 얻으려면 다음 코드를 사용하면 됩니다.
for i in range(1, n + 1):
print(i) #prints from 1 to n
단지 많은 경우에 대해 추론하는 것이 더 편리할 뿐이다.
는'와 '어느 정도' 이라고 볼 수 있습니다.start
★★★★★★★★★★★★★★★★★」end
.start <= end
는 '간격'입니다.end - start
.len
실제로는 길이로 정의되어 있습니다.다음과 같이 됩니다.
len(range(start, end)) == start - end
그러나 구간의 길이를 측정하는 대신 범위에 포함된 정수를 계산합니다.위의 속성을 true로 유지하려면 엔드포인트 중 하나를 포함하고 다른 엔드포인트는 제외해야 합니다.
의 추가step
파라미터는 길이의 단위를 도입하는 것과 같습니다.때는 수 있을 거예요.
len(range(start, end, step)) == (start - end) / step
길게.카운트를 얻으려면 정수 나눗셈만 사용합니다.
언급URL : https://stackoverflow.com/questions/4504662/why-does-rangestart-end-not-include-end
'programing' 카테고리의 다른 글
노드의 문자열에서 스트림을 만드는 방법.Js? (0) | 2023.01.03 |
---|---|
PHP 특성 - 일반 상수 정의 (0) | 2023.01.03 |
올바른 JSON 날짜 형식은 무엇입니까? (0) | 2023.01.03 |
SQL: "X가 있는 모든 행 또는 없는 경우 Y가 있는 모든 행"을 얻기 위한 단일 쿼리가 있습니까? (0) | 2023.01.03 |
Enum의 values() 메서드에 대한 문서는 어디에 있습니까? (0) | 2023.01.03 |