본문 바로가기
컴퓨터 언어/Python

[Python 3] Range , sorted , sort 란 무엇인가.

by SuperMemi 2020. 3. 10.
반응형

range(stop)

 

인수가 하나 일때 : 0 <= N < stop

0부터 시작해서 stop-1 까지의 정수 값을 만들어냄.

>>> list(range(5))
[0, 1, 2, 3, 4]

 

range([start,] stop)

 

인수가 두개 일때 : start <= N < stop

start부터 시작해서 stop-1 까지의 정수 값을 만들어냄.

>>> list(range(10, 20))
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

 

range([start,] stop [,step])

 

인수가 세개 일때 : start <= N < stop

step은 숫자 사이의 거리를 말한다.

start부터 시작해서 stop-1 까지의 step만큼 건너뛴 정수 값을 만들어냄.

# step = 2
>>> list(range(1, 11, 2))
[1, 3, 5, 7, 9]

# step = -2
>>> list(range(1, -11, -2))
[1, -1, -3, -5, -7, -9]

# step = 4
>>> list(range(-11, 11, 4))
[-11, -7, -3, 1, 5, 9]

 

sorted(iterable)

 

입력값을 정렬한 후 그 결과를 리스트로 리턴하는 함수이다.

# 문자열
>>> x = 'star'
>>> sorted(x)
['a', 'r', 's', 't']


# 리스트
>>> sorted([3,6,2,7,4])
[2, 3, 4, 6, 7]


# 튜플
>>> x = (1,3,2,6,4)
>>> sorted(x)
[1, 2, 3, 4, 6]


# reverse : 내림차순, key = abs 절댓값으로 정렬. 등 옵션추가가능.
>>> x = [6,4,3,5,2,1,-3,-2]
>>> sorted(x, key = abs, reverse = True)
[6, 5, 4, 3, -3, 2, -2, 1]

하지만, 여기서 주의할 점은 본래의 데이터 x 자체를 바꾸는 것이 아니라는 것이다.

>>> x = (1,3,2,6,4)
>>> sorted(x)
[1, 2, 3, 4, 6]
>>> x
(1, 3, 2, 6, 4)

위의 예제를 보면, 정렬된 값이 리턴되어 나왔지만, 기존의 데이터는 변하지 않았음을 알 수 있다.

 

 

sort()

 

sort() 함수는 리스트 객체 그 자체를 정렬만 할 뿐 정렬된 결과를 리턴하지는 않는다.

 

그렇다면, sorted와 sort함수의 가장 큰 차이점은 무엇일까. 아래 예제를 통해 알아보자.

 


>>> a = [6,3,7,4,1,3]


# sorted 사용시 정렬된 값을 리턴할 뿐, 본래의 데이터는 유지.

>>> sorted(a)
[1, 3, 3, 4, 6, 7]
>>> a
[6, 3, 7, 4, 1, 3]


# sort 사용시 본래의 객체를 정렬해서 바꿈. 
>>> a.sort()
>>> a
[1, 3, 3, 4, 6, 7]


# sort는 리턴값이 없기 때문에, result에 저장되는 값이 없음.
>>> result = a.sort()
>>> print(result)
None


# 본래의 값을 변형하기 때문에, list에서 사용가능.
>>> a = 'star'
>>> a.sort()
AttributeError: 'str' object has no attribute 'sort'


# sorted 함수와 마찬가지로 옵션을 추가가능.
>>> x.sort(key=abs, reverse =True)
>>> x
[6, 5, 4, 3, -3, 2, -2, 1]

sorted 함수는 정렬시켜서 리턴값을 새로 만든다.(iterable한 자료형 모두 가능)

sort 함수는 객체 자체를 정렬시키고 리턴값을 만들지 않는다.(그래서 리스트에서 사용가능)

반응형