Python의 목록에서 항목을 무작위로 선택하는 방법

  1. 모듈random을 사용하여 Python의 목록에서 무작위 항목 선택
  2. 모듈secrets를 사용하여 Python의 목록에서 임의의 항목 선택
  3. 모듈numpy를 사용하여 Python의 목록에서 임의 항목 선택

이 자습서에서는 Python의 목록에서 임의의 항목을 선택하는 방법을 보여줍니다. 이를 달성하는 여러 가지 간단한 방법이 있으며, 모두 Python 모듈 가져 오기를 포함합니다.

이 튜토리얼에서는random,secrets,numpy 모듈이 필요한 솔루션을 다룹니다.

제시 될 모든 솔루션은 의사 난수 생성기 (PRNG)를 사용합니다.

모듈random을 사용하여 Python의 목록에서 무작위 항목 선택

무작위 화에 사용되는 가장 일반적인 모듈은 random 모듈입니다. 이 모듈은 무작위 화와 관련된 작업을 지원하기 위해 의사 무작위 유틸리티 함수를 구현합니다.

투표 용지처럼 목록에서 임의의 이름을 선택하고 싶다고 가정 해 보겠습니다.

['John', 'Juan', 'Jane', 'Jack', 'Jill', 'Jean']

이 목록에서 임의의 이름을 선택하려면 주어진 사용 가능한 데이터에서 항목을 선택하는random.choice()를 사용합니다.

import random

names = ['John', 'Juan', 'Jane', 'Jack', 'Jill', 'Jean']
def selectRandom(names):
  return random.choice(names)

print("The name selected is: ", selectRandom(names))

물론 출력은 가변적이고 무작위입니다. 따라서 변수names에 저장된 6 개의 이름 중 하나 일 수 있습니다.

모듈secrets를 사용하여 Python의 목록에서 임의의 항목 선택

secrets 모듈은 본질적으로random과 동일한 목적으로 사용됩니다. 그러나 secrets는 PRNG를 구현하는 암호화 보안 방법을 제공합니다.

암호, 인증, 암호화 및 암호 해독, 토큰 저장과 같은 실제 응용 프로그램에서. secretsrandom를 사용하는 것보다 훨씬 안전합니다. 시뮬레이션이나 민감한 데이터를 처리하지 않는 작업에만 유용하기 때문입니다.

이 문제에서는 민감한 데이터를 처리하지 않고 시뮬레이션을 위해이 작업을 수행하므로 두 모듈 모두 동일한 값을 제공합니다.

이 예에서는 동일한 names목록을 사용합니다. secrets에는random.choice()와 동일한 변수 출력을 생성하는choice()함수의 버전도 있습니다.

import secrets

names = ['John', 'Juan', 'Jane', 'Jack', 'Jill', 'Jean']
def selectRandom(names):
  return secrets.choice(names)

print("The name selected is: ", selectRandom(names))

모듈numpy를 사용하여 Python의 목록에서 임의 항목 선택

numpy 모듈에는 랜덤 화를위한 유틸리티 함수도 있으며choice()함수에 대한 인수로 몇 가지 확장 도구가 있습니다.

다시 말하지만, 함수numpy.random.choice()를 보여주기 위해 동일한names 목록을 사용할 것입니다.

import numpy 

names = ['John', 'Juan', 'Jane', 'Jack', 'Jill', 'Jean']
def selectRandom(names):
  return numpy.random.choice(names)

print("The name selected is: ", selectRandom(names))

이 함수는 다른 두 모듈이 생성 한 것과 동일한 변수 출력을 반환합니다.

numpychoice()에 대한 다른 인수도 제공하여 목록 형식으로 출력합니다.

두 번째 인수는 반환 할 임의 항목 수를 결정하기 위해 정수 값을받습니다. names목록에서 임의의 항목 4 개를 반환한다고 가정 해 보겠습니다.

def selectRandom(names):
  return numpy.random.choice(names, 4)

print("The names selected are: ", selectRandom(names))

샘플 출력 :

The names selected are: ['John', 'Jill', 'Jill', 'Jill']

무작위 결과에서 동일한 항목이 두 번 이상 반복 될 가능성이 있습니다.

결과 항목이 고유 한 것을 선호하는 경우 세 번째 boolean인수를 전달하여 교체없이 무작위 샘플링을 사용할 수 있습니다.

def selectRandom(names):
  return numpy.random.choice(names, 4, False)

샘플 출력 :

The names selected are: ['Jill', 'John', 'Jack', 'Jean']

이 함수는 항상 중복 항목없이 고유 한 목록을 생성합니다.

세 번째 인수를 추가하는 경우 한 가지 주요 단점은 중복을 확인하고 아직 결과 내에 존재하지 않는 항목으로 대체하기 위해 추가 된 작업을 실행하기 때문에 함수의 런타임입니다.

요약하면, 파이썬 목록에서 임의의 항목을 선택하는 것은random,secrets 또는numpy의 세 가지 모듈 중 하나를 사용하여 수행 할 수 있습니다. 각각의 장점과 단점이 있습니다.

암호 학적으로 안전한 PRNG 방법을 원한다면 secrets가 가장 적합한 모듈입니다. 시뮬레이션 또는 민감하지 않은 데이터 조작만을 목적으로하는 경우random 또는numpy를 사용하십시오. 하나 이상의 임의 결과를 원하면numpy를 사용하십시오.

관련 문장 - Python List

  • Python에서 목록의 모든 순열을 생성하는 방법
  • Python에서 CSV에 목록을 작성하는 방법