[python] 목록에서 임의로 항목을 선택하는 방법은 무엇입니까?


5 Answers

당신은 또한 색인이 필요할 경우를 대비하여 :

foo = ['a', 'b', 'c', 'd', 'e']
from random import randrange
random_index = randrange(0,len(foo))
print foo[random_index]
Question

다음 목록이 있다고 가정합니다.

foo = ['a', 'b', 'c', 'd', 'e']

이 목록에서 임의로 항목을 검색하는 가장 간단한 방법은 무엇입니까?




foo = ['a', 'b', 'c', 'd', 'e']
number_of_samples = 1

파이썬 2 :

random_items = random.sample(population=foo, k=number_of_samples)

파이썬 3 :

random_items = random.choices(population=foo, k=number_of_samples)



목록에서 임의로 항목을 선택하는 방법은 무엇입니까?

다음 목록이 있다고 가정합니다.

foo = ['a', 'b', 'c', 'd', 'e']  

이 목록에서 임의로 항목을 검색하는 가장 간단한 방법은 무엇입니까?

만약 당신이 정말로 무작위에 가까워 지길 원한다면, 나는 choice 방법으로 random 모듈의 SystemRandom 객체를 사용할 것을 제안한다.

>>> import random
>>> sr = random.SystemRandom()
>>> foo = list('abcde')
>>> foo
['a', 'b', 'c', 'd', 'e']

그리고 지금:

>>> sr.choice(foo)
'd'
>>> sr.choice(foo)
'e'
>>> sr.choice(foo)
'a'
>>> sr.choice(foo)
'b'
>>> sr.choice(foo)
'a'
>>> sr.choice(foo)
'c'
>>> sr.choice(foo)
'c'

결정 론적 의사 임의 선택을 원한다면 choice 함수를 사용하십시오 (실제로는 Random 객체에서 바운드 메소드입니다).

>>> random.choice
<bound method Random.choice of <random.Random object at 0x800c1034>>

무작위로 보이지만 실제로는 그렇지 않습니다. 반복적으로 다시 시드하면 볼 수 있습니다.

>>> random.seed(42); random.choice(foo), random.choice(foo), random.choice(foo)
('d', 'a', 'b')
>>> random.seed(42); random.choice(foo), random.choice(foo), random.choice(foo)
('d', 'a', 'b')
>>> random.seed(42); random.choice(foo), random.choice(foo), random.choice(foo)
('d', 'a', 'b')
>>> random.seed(42); random.choice(foo), random.choice(foo), random.choice(foo)
('d', 'a', 'b')
>>> random.seed(42); random.choice(foo), random.choice(foo), random.choice(foo)
('d', 'a', 'b')



import random_necessary
pick = ['Miss','Mrs','MiSs','Miss']
print  pick [int(random_necessary.random_necessary() * len(pick))]

이 솔루션이 도움이되기를 바랍니다.




이것은 무작위 색인을 정의하는 변수가있는 코드입니다.

import random

foo = ['a', 'b', 'c', 'd', 'e']
randomindex = random.randint(0,len(foo)-1) 
print (foo[randomindex])
## print (randomindex)

이것은 변수가없는 코드입니다.

import random

foo = ['a', 'b', 'c', 'd', 'e']
print (foo[random.randint(0,len(foo)-1)])

그리고 이것은 가장 짧고 똑똑한 방법입니다.

import random

foo = ['a', 'b', 'c', 'd', 'e']
print(random.choice(foo))

(파이썬 2.7)




비어있을 때까지 목록에서 무작위로 선택한 항목을 제거하기위한 스크립트를 제안합니다.

set 유지하고 목록이 비어있을 때까지 무작위로 선택 된 요소를 choice 과 함께 제거합니다.

s=set(range(1,6))
import random

while len(s)>0:
  s.remove(random.choice(list(s)))
  print(s)

세 번의 달리기는 세 가지 다른 대답을 준다.

>>> 
set([1, 3, 4, 5])
set([3, 4, 5])
set([3, 4])
set([4])
set([])
>>> 
set([1, 2, 3, 5])
set([2, 3, 5])
set([2, 3])
set([2])
set([])

>>> 
set([1, 2, 3, 5])
set([1, 2, 3])
set([1, 2])
set([1])
set([])


Related