본문 바로가기
파이썬

파이썬 항목 순서를 유지하면서 목록에서 무작위 샘플을 얻습니까?

by º기록 2020. 9. 29.
반응형

나는 정렬 된 목록을 가지고 있습니다.

mylist = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ,9  , 10 ]

N 개의 항목을 제공하지만 주문을 유지하는 파이썬 함수가 있습니까?

예:

randomList = getRandom(mylist,4)
# randomList = [ 3 , 6 ,7 , 9 ]
randomList = getRandom(mylist,4)
# randomList = [ 1 , 2 , 4 , 8 ]

기타...

 

해결 방법

 

다음 코드는 크기 4의 무작위 샘플을 생성합니다.

import random

sample_size = 4
sorted_sample = [
    mylist[i] for i in sorted(random.sample(range(len(mylist)), sample_size))
]

(참고 : Python 2에서는 range 대신 xrange 를 사용하는 것이 좋습니다.)

설명

random.sample(range(len(mylist)), sample_size)

원래 목록의 인덱스 에 대한 무작위 샘플을 생성합니다.

이러한 인덱스는 원래 목록의 요소 순서를 유지하기 위해 정렬됩니다.

마지막으로, 목록 이해력은 샘플링 된 인덱스가 주어지면 원래 목록에서 실제 요소를 가져옵니다.

 

참조 페이지 https://stackoverflow.com/questions/6482889

 

 

반응형

댓글