코딩공부

[Python] 리스트 정렬하기

히그다스 2023. 10. 23. 00:22

 

 

오늘은 코테하면서 기억이 안나서 안타까웠던 거 정리하기

 

 

정렬하기

sort는 순서만 정렬하고 원본은 그대로 !

sorted는 원본을 바꿔버리는 것

→ 이걸 아는데 적용을 못함

 

파이썬 리스트에는 리스트를 제자리에서(in-place) 수정하는 내장 list.sort()  메서드가 있습니다.
또한, 이터러블로부터 새로운 정렬된 리스트를 만드는 sorted() 내장 함수가 있습니다.

 

역순으로 정렬하기

기본적으로 [::-1]로 역순으로 정렬시킬 수 있다

list = [1,2,3,4,5]

for i in list[::-1]:
	print(i)

 

 

이렇게 나온다

 

 

하지만 reverse가 내가 원했던 것이다

이걸 겨우 기억해냈는데 문제가 뭐냐면

 

 

이거였다

코테 중에 찾아볼수도 없어서 더 속터졌음

 

아무리 reverse 메소드가 리스트를 역순을 취해줘서 list로 보일 수 있을지 몰라도,
reverse 메소드 자체의 반환 값이 없습니다. → NoneType
따라서 루프를 돌릴 수 없습니다.
만약 루프를 돌리고 싶으시면 앞서서 reverse 작업을 하시고 나서 루프를 돌리시는 것을 추천합니다. 

 

sort, sorted처럼

reverse도 reversed라는 함수가 있다

 

reverse()
배열의 항목 순서를 뒤집습니다.

 

다른점이라면 reversed(list)라고 적어줘야 한다는 것

파이썬 도큐먼트에 보면

 

reversed(seq)
Return a reverse iterator. seq must be an object which has a __reversed__() method or supports the sequence protocol (the __len__() method and the __getitem__() method with integer arguments starting at 0).

 

"역반복 반복기를 반환합니다. seq는 __reversed__() 메서드를 사용하거나 시퀀스 프로토콜(0부터 시작하는 정수 인수로 __len__() 메서드 및 __getitem__() 메서드)을 지원하는 개체여야 합니다."

 

아래와 같이 써야 작동이 된다

 

list = [1,2,3,4,5]
 
for li in reversed(list):
    print(li)

 

결과는 똑같음

 

 

참고한 블로그에서는 resevered가 시간이 [::-1]에 비해 오래걸린다고 했다

알고 있으면 좋을 듯

 

 


출처 : 파이썬 다큐먼트 (https://docs.python.org/ko/3/howto/sorting.html), https://appia.tistory.com/170

 

Sorting HOW TO

Author, Andrew Dalke and Raymond Hettinger,, Release, 0.1,. Python lists have a built-in list.sort() method that modifies the list in-place. There is also a sorted() built-in function that builds a...

docs.python.org

 

파이썬[Python] List 역순으로 만들기 (reversed,reverse)

오늘 포스팅은 뒤로 돌아가는 세상으로 한번 꾸며 보고자 합니다. 다름 아니라, List을 역순으로 즉 거꾸로 뒤에서부터 값을 읽어오는 형태로 루프를 돌리거나, 아니면 리스트를 역순으로 바꾸는

appia.tistory.com