[python] range ()와 역순으로 목록을 인쇄 하시겠습니까?

range()파이썬에서 다음 목록을 어떻게 만들 수 있습니까?

[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]



답변

사용 reversed()기능 :

reversed(range(10))

훨씬 더 의미가 있습니다.

최신 정보:

btk가 지적한 것처럼 목록이되고 싶다면 :

list(reversed(range(10)))

최신 정보:

range동일한 결과를 얻기 위해서만 사용하려는 경우 모든 매개 변수를 사용할 수 있습니다.range(start, stop, step)

예를 들어, list를 생성 [5,4,3,2,1,0]하려면 다음을 사용할 수 있습니다.

range(5, -1, -1)

덜 직관적 일 수 있지만 의견에서 언급했듯이 이것은 더 효율적이며 역순으로 범위를 올바르게 사용합니다.


답변

‘범위’내장 기능을 사용하십시오. 서명은입니다 range(start, stop, step). 이렇게하면을 (를) 시작 하고을 (를) 제외하고 끝에 도달 start하면 끝나는 시퀀스를 생성합니다 .stopstop

>>> range(9,-1,-1)
    [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> range(-2, 6, 2)
    [-2, 0, 2, 4]

파이썬 3에서 이것은리스트가 아닌 range객체를 생성하는데 , 이것은 읽기 전용리스트처럼 효과적으로 기능합니다 (그러나 특히 넓은 범위에서 메모리를 덜 사용합니다).


답변

일반적인 파이썬 관용구에 익숙한 경우와 range(10)[::-1]동일 range(9, -1, -1)하고 더 읽기 쉬운 것을 사용할 수 있습니다 sequence[::-1].


답변

지금까지 수집 된 옵션의 “효율”에 관심이있는 사람들을 위해 …

제이미 RGP의 대답은 나를 이끌어 내 컴퓨터를 다시 시작한, 타이밍 의 다소 ‘도전 “솔루션 제이슨 문자 (코멘트를 통해) 내 자신의 제안 다음. 다운 타임에 대한 궁금증을 해소하기 위해 여기에 내 결과를 제시합니다 (최악).

Jason의 답변 ( 목록 이해 의 힘에 대한 여행 일 수 있습니다 ) :

$ python -m timeit "[9-i for i in range(10)]"
1000000 loops, best of 3: 1.54 usec per loop

martineau의 답변 ( 확장 슬라이스 구문에 익숙한 경우 읽을 수 있음 ) :

$ python -m timeit "range(10)[::-1]"
1000000 loops, best of 3: 0.743 usec per loop

Michał Šrajer의 답변 (허용되는 답변 )

$ python -m timeit "reversed(range(10))"
1000000 loops, best of 3: 0.538 usec per loop

bene ‘s answer (최초이지만 그 당시의 스케치 ) :

$ python -m timeit "range(9,-1,-1)"
1000000 loops, best of 3: 0.401 usec per loop

마지막 옵션은 Val Neekmanrange(n-1,-1,-1)표기법을 사용하여 기억하기 쉽습니다 .


답변

for i in range(8, 0, -1)

이 문제를 해결할 것입니다. 그것은 8 대 1을 출력 할 것이고, -1은 반대로 된 목록을 의미합니다


답변

reverserange 메소드가 역순으로리스트를 리턴 할 수 있기 때문에 사용이 불가능 합니다.

n 개의 항목에 대해 반복이 있고 리턴 된 목록의 순서를 바꾸려면 범위를 식별 하고로 설정하는 범위의 세 번째 매개 변수range(start, stop, step) 를 사용해야 하며 다른 매개 변수는 그에 따라 조정됩니다.step-1

  1. 중지 매개 변수를로 제공하십시오 -1(이전 값은 stop - 1이고 stop같음 0).
  2. 시작 매개 변수로을 사용하십시오 n-1.

따라서 range (n)과 반대 순서는 다음과 같습니다.

n = 10
print range(n-1,-1,-1)
#[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]


답변

가독성이 제쳐두고 reversed(range(n))보다 빠릅니다 range(n)[::-1].

$ python -m timeit "reversed(range(1000000000))"
1000000 loops, best of 3: 0.598 usec per loop
$ python -m timeit "range(1000000000)[::-1]"
1000000 loops, best of 3: 0.945 usec per loop

누군가 궁금해하는 경우 🙂