2016-03-29 12 views
1

Ich habe eine Liste und ich drucke zufällig eines seiner Elemente, aber ich möchte ein anderes zufälliges Element aus der Liste drucken und ich möchte 100% sicher sein, dass es nicht das vorherige ist.Python zufällige Auswahl von Liste ohne vorherige Auswahl

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) –

Antwort

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

eine weitere Alternative ist es, die Namen aus der Liste zu entfernen, da sie nach dem Zufall

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

'names.pop()' ist, was er wollte, glaube ich. – Bharel

+1

Warum? Es würde sicherlich funktionieren, aber was macht es zu einer besseren Wahl? –

+0

Ich meinte 'random.shuffle (names)' und 'names.pop()' anstelle des Zugriffs nach Index. Keine Notwendigkeit, die Namen nach dem Gebrauch zu behalten. – Bharel

4

Verwenden random.sample einzigartige Elemente aus einer bestimmten Reihenfolge zu wählen, wie diese

import random 

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

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

print(choice[0]) 
print(choice[1]) 
Verwandte Themen