Python 리스트 shuffle 하기
Python에서 random 모듈을 이용해 리스트의 원소를 쉽게 shuffle할 수 있다.
random 모듈에서는 편리한 method들이 몇개 있는데 그중 하나인 random.shuffle(sequence) 을 이용면 된다.
아래는 예시 코드이다.
import random
my_list = ['bar', 'baz', 'foo', 'qux', 'fred', 'thud']
print(my_list)
random.shuffle(my_list)
print(my_list)
위 코드를 실행하여 원래 리스트와 shuffle 된 리스트 두개의 출력값을 뽑아보자.
터미널에서 3번 실행했을때 결과이다. 아래와 같이 노란 화살표로 표시된 부분을 보면 랜덤하게 원소들이 섞여있는 것을 확인할 수 있다.
random 모듈 seed 고정하기
모종의 이유로 여러번 코드를 수행해도 그 결과가 바뀌지 않기를 바랄 수 있다. 예를들어 딥러닝 모델을 개발하고 실험을 할때 같은 실험을 재현하기 위함 등의 이유가 있다.
이런 경우 random 모듈의 seed를 고정해 항상 같은 결과를 얻을 수 있다. 아래와 같이 seed를 고정하는 코드 한줄을 추가해 보자.
import random
random.seed(0)
my_list = ['bar', 'baz', 'foo', 'qux', 'fred', 'thud']
print(my_list)
random.shuffle(my_list)
print(my_list)
기존 코드에서 random.seed(0) 을 추가하였다. 이렇게 rand.seed 괄호안에 들어가는 숫자 k를 고정하면 랜덤하게 섞는 결과를 동일하게 보장해줄 수 있다. 물로 k의 값을 0이 아닌 다른 숫자로 변경하면 새로운 결과를 얻을 수 있다.
아래는 터미널에서 3번 실험을 했을때 shuffle 결과이다. 아까와는 다르게 세번의 수행 결과 모두 같은 순서로 리스트가 섞인 것을 확인할 수 있다.
오늘은 이렇게 python 리스트의 원소를 랜덤하게 shuffle하는 방법과 seed를 고정하는 방법과 실행 결과를 확인하였다!