3. 파이썬 리스트 순서 뒤집기


파이썬 리스트 순서 뒤집기

파이썬 리스트 또는 NumPy의 어레이를 다룰 때 순서를 앞뒤로 뒤집어야 하는 상황이 흔하게 발생합니다.

이 페이지에서는 파이썬 리스트 또는 NumPy 어레이의 순서를 뒤집는 방법에 대해 소개합니다.


예를 들어, 아래와 같이 네이버 금융 삼성전자 일별시세 페이지에서 주식의 종가를 크롤링해서 가져왔을 때

최신순에서 시간순으로 정렬할 필요가 있을 수 있습니다.



1. 파이썬 리스트 뒤집기

1) 슬라이싱 사용하기

파이썬 리스트를 뒤집는 가장 간편한 방법은 아래와 같이 리스트 슬라이싱 기능을 사용하는 것입니다.

_images/reverse_python_list_03.png

리스트 슬라이싱 사용하기.


예제

close = [46250, 46600, 47000, 46500, 45700, 45600, 45500, 45700, 45500, 45350]
reversed_close = close[::-1]

print(reversed_close)
[45350, 45500, 45700, 45500, 45600, 45700, 46500, 47000, 46600, 46250]

close[::-1]은 순서가 뒤집어진 close 리스트가 됩니다.

하지만 원본 리스트 close는 바뀌지 않습니다.

파이썬 리스트의 슬라이싱에 대한 자세한 내용은 파이썬 - 리스트 슬라이싱 페이지를 참고하세요.



2) reverse() 메서드 사용하기

파이썬 리스트를 뒤집는 또 다른 방법은 reverse() 메서드를 사용하는 것입니다.

_images/reverse_python_list_04.png

리스트 메서드 reverse() 사용하기.


예제

close = [46250, 46600, 47000, 46500, 45700, 45600, 45500, 45700, 45500, 45350]
close.reverse()

print(close)
[45350, 45500, 45700, 45500, 45600, 45700, 46500, 47000, 46600, 46250]

파이썬 리스트의 메서드 중 하나인 reverse()는 해당 리스트의 순서를 뒤집습니다.

원본 리스트 close의 순서가 바뀝니다.

파이썬 리스트의 다양한 메서드에 대해서는 파이썬 - 리스트 메서드 페이지를 참고하세요.



3) 내장함수 reversed() 사용하기

파이썬 내장함수 reversed()를 사용해서 리스트와 같은 시퀀스 자료형을 뒤집을 수 있습니다.

_images/reverse_python_list_05.png

파이썬 내장함수 reversed() 사용하기.


예제

close = [46250, 46600, 47000, 46500, 45700, 45600, 45500, 45700, 45500, 45350]
reversed_close = list(reversed(close))

print(reversed_close)
[45350, 45500, 45700, 45500, 45600, 45700, 46500, 47000, 46600, 46250]

reverse() 내장함수는 주어진 시퀀스 (리스트, 튜플 등)에 대해 순서가 뒤집어진 iterator 객체의 형태로 반환하기 때문에

내장함수 list()를 이용해서 리스트 자료형으로 변환해줍니다.

원본 리스트 close의 순서는 바뀌지 않습니다.



2. NumPy 어레이 뒤집기

1) 슬라이싱 사용하기

파이썬의 리스트와 같이 NumPy의 어레이에 대해서도 슬라이싱 기능을 사용할 수 있습니다.

예제

import numpy as np

close = np.array([46250, 46600, 47000, 46500, 45700, 45600, 45500, 45700, 45500, 45350])
reversed_close = close[::-1]

print(reversed_close)
[45350 45500 45700 45500 45600 45700 46500 47000 46600 46250]

close[::-1]는 뒤집어진 NumPy 어레이를 반환합니다.

NumPy 어레이에 대해서는 NumPy 다양한 함수들 - numpy.array 페이지를 참고하세요.



2) numpy.flip() 사용하기

np.flip() 메서드는 어레이 요소의 순서를 뒤집습니다.

_images/reverse_python_list_06.png

np.flip() 사용하기.


예제

import numpy as np

close = np.array([46250, 46600, 47000, 46500, 45700, 45600, 45500, 45700, 45500, 45350])
reversed_close = np.flip(close)

print(reversed_close)
[45350 45500 45700 45500 45600 45700 46500 47000 46600 46250]

np.flip(close)는 순서가 뒤집어진 close 어레이를 반환합니다.

원본 어레이 close는 바뀌지 않습니다.



3) numpy.flipud() 사용하기

1차원 어레이에 대해 np.flipud() 메서드는 np.flip()과 같은 동작을 합니다.

예제

import numpy as np

close = np.array([46250, 46600, 47000, 46500, 45700, 45600, 45500, 45700, 45500, 45350])
reversed_close = np.flipud(close)

print(reversed_close)
[45350 45500 45700 45500 45600 45700 46500 47000 46600 46250]

np.flipud(close)는 순서가 뒤집어진 close 어레이를 반환합니다.


4) np.flip() vs np.flipud() vs np.fliplr()

np.flip(), np.flipud(), np.fliplr() 메서드의 차이에 대해 알아봅니다.

2차원 어레이에서 세가지 메서드는 다르게 동작합니다.

_images/reverse_python_list_07.png

np.flip() vs np.flipud() vs np.fliplr().

np.flip()은 요소의 순서를 뒤집습니다.

np.flipud()flip up/down direction 메서드입니다. 요소를 위/아래 방향으로 뒤집습니다.

np.fliplr()flip left/right direction 메서드입니다. 요소를 좌/우 방향으로 뒤집습니다.


예제

import numpy as np

a = np.array([[1, 2], [3, 4]])

print(a)
print(np.flip(a))
print(np.flipud(a))
print(np.fliplr(a))
[[1 2]
[3 4]]
[[4 3]
[2 1]]
[[3 4]
[1 2]]
[[2 1]
[4 3]]

np.flipud(arr)는 arr[::-1, …]과 동일합니다.

np.fliplr(arr)는 최소 2차원 이상의 어레이에 대해 동작하며 arr[:,::-1]과 동일합니다.



이전글/다음글