2016-03-29 29 views
1

Bir listem var ve rastgele bir öğeden birini yazdırıyorum, ancak listeden başka bir rasgele öğe yazdırmak istiyorum ve% 100 emin olmak istiyorum. Eğer rastgele onları almak olarakPython rastgele seçim yapmadan önce listeden çıkar

import random 
i = 0 
Names = ["Andrew", 'John', 'Jacob','Bob'] 

for l in Names: 
    i += 1 


c = random.randrange(0,i) 
print(Names[c]) 
+1

['random.sample'] (https://docs.python.org/2/library/random.html#random.sample) –

cevap

2
random.shuffle(names) 
names[0] # first pick 
names[1] # second pick ... also guaranteed not to be first pick 

başka alternatif listeden isimleri kaldırmaktır

names =[...] 
random1 = names.pop(random.randint(0,len(names))) 
random2 = names.pop(random.randint(0,len(names))) 
+1

'names.pop()' istediğine inanıyorum. – Bharel

+1

neden? kesinlikle işe yarayacaktı ama ne daha iyi bir seçim yapar? –

+0

Dize ile erişmek yerine 'random.shuffle (names)' ve 'names.pop()' diyorum. Kullanımdan sonra isimleri tutmaya gerek yok. – Bharel

4

kullanın random.sample bu

import random 

Names = ['Andrew', 'John', 'Jacob', 'Bob'] 

choice = random.sample(Names, 2) # choose 2 unique names from Names 

print(choice[0]) 
print(choice[1]) 
gibi belirli bir dizide benzersiz öğeleri seçmek için
İlgili konular