본문 바로가기
개발/Python

[Python] 리스트 원소 shuffle

by hoduPython 2023. 9. 20.

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번 실행했을때 결과이다. 아래와 같이 노란 화살표로 표시된 부분을 보면 랜덤하게 원소들이 섞여있는 것을 확인할 수 있다.

위 코드를 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 결과이다. 아까와는 다르게 세번의 수행 결과 모두 같은 순서로 리스트가 섞인 것을 확인할 수 있다.

seed 고정 코드를 3번 실행한 결과. 실행마다 같은 순서로 랜덤하게 원소들이 섞여있는 것을 확인할 수 있다. (노란색 화살표)

 

오늘은 이렇게 python 리스트의 원소를 랜덤하게 shuffle하는 방법과 seed를 고정하는 방법과 실행 결과를 확인하였다!