티스토리 뷰
Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.
Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.
아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.
Print a list in reverse order with range()?
파이썬에서 range()를 사용하여 리스트의 역순 프린트 하기?
문제 내용
How can you produce the following list with range()
in Python?
파이썬에서 range()를 사용하여 아래와 같은 리스트를 어떻게 만들 수 있을까요?
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
높은 점수를 받은 Solution
use reversed()
function:
reversed() 함수를 사용하세요.
reversed(range(10))
It's much more meaningful.
훨씬 더 의미가 있어요.
Update:
업데이트:
If you want it to be a list (as btk pointed out):
리스트로 만들고 싶다면 (btk가 지적한 대로):
list(reversed(range(10)))
Update:
업데이트:
If you want to use only range
to achieve the same result, you can use all its parameters. range(start, stop, step)
range만 사용하여 동일한 결과를 얻으려면 모든 매개변수를 사용할 수 있습니다.
For example, to generate a list [5,4,3,2,1,0]
, you can use the following:
예를 들어, [5,4,3,2,1,0] 리스트를 생성하려면 다음과 같이 사용할 수 있습니다:
range(5, -1, -1)
It may be less intuitive but as the comments mention, this is more efficient and the right usage of range for reversed list.
이것은 덜 직관적일 수 있지만, 댓글에서 언급한 대로, 이것이 뒤집힌 리스트에 대한 range의 올바른 사용 방법이며 더 효율적입니다.
가장 최근 달린 Solution
Very often asked question is whether range(9, -1, -1)
better than reversed(range(10))
in Python 3? People who have worked in other languages with iterators immediately tend to think that reversed() must cache all values and then return in reverse order. Thing is that Python's reversed()
operator doesn't work if the object is just an iterator. The object must have one of below two for reversed() to work:
range(9, -1, -1)이 Python 3에서 reversed(range(10))보다 나은 것인지에 대한 자주 묻는 질문입니다. 반복자를 사용한 다른 언어에서 일한 사람들은 바로 reversed()가 모든 값을 캐시하고 그것을 역순으로 반환해야한다고 생각합니다. 그러나 파이썬의 reversed() 연산자는 객체가 반복자일 경우에만 작동하며, 아래 두 가지 중 하나를 가지고 있어야합니다.
- Either support
len()
and integer indexes via[]
- Or have
__reversed__()
method implemented.
1. []를 통한 len() 및 정수 색인 지원
2. 또는 reversed() 메소드 구현
If you try to use reversed() on object that has none of above then you will get:
위의 두 가지 중 아무것도 없는 객체에서 reversed()를 사용하려고하면 다음과 같은 결과를 얻게 됩니다.
>>> [reversed((x for x in range(10)))]
TypeError: 'generator' object is not reversible
So in short, Python's reversed()
is only meant on array like objects and so it should have same performance as forward iteration.
즉, 파이썬의 reversed()는 배열과 같은 객체에 대해서만 작동하며 순방향 반복과 동일한 성능을 갖습니다.
But what about range()
? Isn't that a generator? In Python 3 it is generator but wrapped in a class that implements both of above. So range(100000)
doesn't take up lot of memory but it still supports efficient indexing and reversing.
그렇다면 range()는 어떨까요? 제너레이터가 아닌가요? Python 3에서는 제너레이터이지만 위의 두 가지를 모두 구현하는 클래스로 래핑됩니다. 그래서 range(100000)은 많은 메모리를 사용하지 않지만 효율적인 인덱싱과 뒤집기를 지원합니다.
So in summary, you can use reversed(range(10))
without any hit on performance.
요약하면, 성능에 영향을 미치지 않고 reversed(range(10))을 사용할 수 있습니다.
출처 : https://stackoverflow.com/questions/7286365/print-a-list-in-reverse-order-with-range
'개발 > 파이썬' 카테고리의 다른 글
Python에서 dictionary의 고유한 키(key) 개수 세는 방법 (0) | 2023.03.01 |
---|---|
sklearn에서 import 오류 수정하기 (0) | 2023.03.01 |
판다스 데이터프레임 열(문자열)을 날짜로 변환 (0) | 2023.02.27 |
Python에서 numpy를 사용하여 TIFF(가져오기, 내보내기) 작업 (0) | 2023.02.27 |
딕셔너리에서 키가 존재하는지 확인하고 값 증가시키기 (0) | 2023.02.26 |