Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬에서 리스트 항목을 무작위로 추출하는 방법 완벽 정리

파이썬에서 리스트의 항목을 무작위로 다루어야 할 때가 종종 있습니다. 예를 들어 카드 게임 덱을 섞거나, 데이터를 임의의 순서로 배치하거나, 표본을 무작위로 뽑는 경우입니다. 이럴 때 파이썬 표준 라이브러리의 random 모듈이 유용하게 사용됩니다. 상황에 따라 활용할 수 있는 대표적인 함수 세 가지를 예제와 함께 살펴보겠습니다.

1. 리스트 전체를 무작위로 섞기: random.shuffle()

shuffle() 함수는 시퀀스의 요소들을 무작위 순서로 재배치합니다. 주의할 점은 이 함수가 원본 리스트를 제자리(in-place)에서 직접 변경하며, 새로운 리스트를 반환하지 않고 None을 반환한다는 것입니다.

>>> 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]

실행할 때마다 결과 순서가 달라지며, 원본 리스트 자체가 섞인 상태로 유지됩니다.

2. 항목 하나를 무작위로 뽑기: random.choice()

리스트에서 단 하나의 항목만 무작위로 추출하고 싶다면 choice() 함수를 사용합니다.

>>> import random
>>> l1 = ['aa', 22, 'ff', 15, 90, 5.55]
>>> random.choice(l1)
'ff'

호출할 때마다 리스트 내 임의의 요소 하나가 반환되며, 원본 리스트는 변경되지 않습니다.

3. 여러 항목을 중복 없이 추출하기: random.sample()

원본 리스트를 그대로 유지한 채 여러 개의 항목을 무작위로 추출하려면 sample() 함수를 사용합니다. 첫 번째 인자로 리스트를, 두 번째 인자로 추출할 개수를 지정합니다.

>>> random.sample(l1, 3)
[90, 'aa', 5.55]

sample()은 비복원 추출 방식으로 동작하기 때문에 같은 항목이 중복해서 선택되지 않으며, 결과는 새로운 리스트로 반환됩니다.

정리

세 함수의 차이를 간단히 요약하면 다음과 같습니다.

  • shuffle(): 원본 리스트 자체를 무작위로 섞음 (반환값 없음)
  • choice(): 항목 하나만 무작위로 반환
  • sample(): 지정한 개수만큼 중복 없이 무작위 추출 (새 리스트 반환)