리스트가 갖고 있는 요소들의 순서를 랜덤으로 섞는 방법에 대해서 알아보겠습니다.

리스트의 요소들을 무작위로 뽑거나, 어떤 동작을 무작위로 동작하게 만드려고 리스트의 순서를 랜덤으로 변경하고 싶을 때가 있습니다.

1. random.shuffle()을 이용한 방법

random.shuffle(list)는 list의 순서를 랜덤으로 섞습니다.

아래와 같이 구현할 수 있습니다.

import random

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

random.shuffle(my_list)
print(my_list)

Output:

[1, 5, 4, 3, 2]

2. random.sample()을 이용한 방법

random.sample(list, num)은 list가 갖고 있는 요소들 중에서 num 개수만큼 무작위로 요소 값을 뽑고 값들을 리스트에 저장하여 리턴합니다.

  • random.sample(my_list, len(my_list)) : my_list의 개수만큼 무작위로 뽑고 리스트로 반환, 즉, my_list의 순서가 랜덤으로 변경된 리스트가 새로운 만들어짐
  • my_list의 순서는 변경되지 않음
import random

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

shuffled_list = random.sample(my_list, len(my_list))
print(shuffled_list)

Output:

[4, 1, 3, 2, 5]

3. random.choice()를 이용한 방법

random.choice(list)는 list에서 무작위로 1개의 요소를 뽑아서 리턴합니다.

아래와 같이 랜덤으로 섞은 리스트를 만들 수 있습니다.

  • random.choice(my_list) : my_list에서 무작위로 하나 뽑음
  • shuffled_list.append(element) : 무작위 요소를 결과 리스트에 저장
  • my_list.remove(element) : 한번 뽑은 요소가 다음 choice()에서 다시 안뽑히도록 my_list에서 제거
  • while my_list: : my_list에서 모든 값을 뽑아서 비어 있는 리스트가 되면, while문 종료됨
import random

my_list = [1, 2, 3, 4, 5]
shuffled_list = []

while my_list:
    element = random.choice(my_list)
    shuffled_list.append(element)
    my_list.remove(element)

print(shuffled_list)

Output:

[2, 3, 1, 5, 4]