2017-05-04 1 views
0

range() 함수는 괄호 안에 넣은 인수가있는 목록을 반환한다고 생각했습니다. 하지만 IDLE에 range(4)을 입력하면 range(0, 4)이 출력됩니다. 마찬가지로 print(range(4))을 입력하면 range(0, 4)도 출력됩니다. 저는 현재 파이썬 3.5를 사용하고 있습니다.python에서 range() 함수의 반환 값은 무엇입니까?

저는 "컴퓨터 과학자처럼 생각하는 법"과 그 전자 책에서 파이썬 코드를 실행할 수있는 활성 코드 블록을 제공합니다. 그리고 print(range(4))을 실행하면 예상 한 목록 (예 : [0, 1, 2, 3])이 표시됩니다.

누군가가 설명해 주시겠습니까?

미리 감사드립니다.

답변

6

아마도 읽고있는 책은 아마도 파이썬 2를 사용하고 있습니다. 여기서 range은 목록을 반환합니다.

파이썬 3에서 range은 대신 immutable sequence type을 반환합니다. this에 따라

1

range(a, b)range의 인스턴스를 반환하십시오. 당신은 print(type(range(1, 5)))으로 그것을 확인할 수 있습니다.

그리고 예상되는 것은 print(list(range(a, b)))입니다.

1

는 :

그래서 파이썬 3.x의에서, 범위() 함수는 자신의 유형을 얻었다. 기본적인 용어로, for 루프에서 range()를 사용하고자한다면, 당신은 가야한다. 그러나 순전히 목록 객체로 사용할 수는 없습니다. 예를 들어 범위 유형을 분할 할 수 없습니다. 당신이 그것에 print()를 호출하는 경우

는하지만, print 기능 범위 객체의 문자열 표현을 만들려고 할 것이고,이 문자열 표현은 목록의 문자열 표현에 해당합니다.

당신이 목록을 원하는 경우에 당신은 할 수 list(range(<parameters>))

2

당신의 책은 아마도 파이썬 2.x 또는 3.0을 사용하여 작성되었다 Python 2.x에서 range 함수는 실제로 for 루프가 반복 할 목록을 반환했습니다. 파이썬 3.x에서 range 함수는 자신의 타입이고 실제로는 생성자 함수이므로 for 루프가 실행될 때 숫자가 즉석에서 생성됩니다.

이렇게 범위 목록에 전달하면 범위 함수에서 목록을 만들 수 있습니다.

list(range(4)) 

다음 내용의 목록을 출력합니다.

[0,1,2,3]