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
하면 끝나는 시퀀스를 생성합니다 .stop
stop
>>> 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 Neekman 의 range(n-1,-1,-1)
표기법을 사용하여 기억하기 쉽습니다 .
답변
for i in range(8, 0, -1)
이 문제를 해결할 것입니다. 그것은 8 대 1을 출력 할 것이고, -1은 반대로 된 목록을 의미합니다
답변
reverse
range 메소드가 역순으로리스트를 리턴 할 수 있기 때문에 사용이 불가능 합니다.
n 개의 항목에 대해 반복이 있고 리턴 된 목록의 순서를 바꾸려면 범위를 식별 하고로 설정하는 범위의 세 번째 매개 변수range(start, stop, step)
를 사용해야 하며 다른 매개 변수는 그에 따라 조정됩니다.step
-1
- 중지 매개 변수를로 제공하십시오
-1
(이전 값은stop - 1
이고stop
같음0
). - 시작 매개 변수로을 사용하십시오
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
누군가 궁금해하는 경우 🙂