파이썬에서 리스트에 담긴 객체들의 순서를 무작위로 섞고 싶다면, 표준 라이브러리의 random 모듈을 사용하면 됩니다. 이 모듈은 난수 생성과 관련된 다양한 기능을 제공하는데, 그중 shuffle() 함수는 리스트 내부의 항목 순서를 임의로 재배열해 줍니다.
random.shuffle() 기본 사용법
random.shuffle() 함수는 인자로 전달된 리스트를 제자리(in-place)에서 직접 섞습니다. 즉, 새로운 리스트를 반환하지 않고 원본 리스트 자체가 변경된다는 점에 유의하세요.
>>> import random
>>> l1 = ['aa', 22, 'ff', 15, 90, 5.55]
>>> random.shuffle(l1)
>>> l1
[22, 15, 90, 5.55, 'ff', 'aa']
>>> random.shuffle(l1)
>>> l1
['aa', 'ff', 90, 22, 5.55, 15]
위 예시에서 볼 수 있듯이, 문자열과 숫자가 혼합된 리스트라도 문제없이 섞일 수 있습니다. 또한 shuffle()을 호출할 때마다 결과 순서가 달라지므로, 실행할 때마다 새로운 무작위 배치를 얻게 됩니다.
주요 특징 정리
- 제자리(in-place) 동작: 원본 리스트가 직접 수정되며, 반환값은
None입니다. - 모든 자료형 지원: 문자열, 숫자 등 서로 다른 타입의 객체가 섞여 있어도 정상적으로 작동합니다.
- 호출 시마다 다른 결과: 매번 호출할 때마다 항목들의 순서가 새롭게 무작위화됩니다.
참고: 원본을 유지하고 싶다면?
원본 리스트를 그대로 두고 섞인 복사본이 필요하다면, 먼저 리스트를 복사한 뒤 shuffle()을 적용하거나, 파이썬 3.9 이상에서는 random.sample(l1, len(l1))을 사용해 섞인 새 리스트를 얻을 수 있습니다.