2017-10-18 4 views
1

Ich habe eine Liste mit vielen Zeichen in ihm wie so:Zufallsstichprobe innerhalb eines bestimmten Bereichs in einer Liste (Array) | Python 3.x

list = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q', 
     'r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9', 
     '0'," ",'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P', 
     'Q','R','S','T','U','V','W','X','Y','Z'] 

ich das Programm will zufällig 8 Zeichen wählen innerhalb der ersten 26 (Kleinbuchstabe) Artikel in meiner Liste. Ich werde die anderen Elemente in diesem Array nicht löschen oder trennen, da ich sie später für eine ähnliche Sache brauche.

Ich bin etwas neu in der Programmierung und ich bevorzuge eine einfache Lösung, obwohl ich dich nicht davon abhalte etwas Komplexeres da draußen für andere zu sehen.

Vielen Dank im Voraus!

+1

Normalerweise benötigen Sie keine Liste für diese Art von 1-Zeichen-Folgen; Verwenden Sie einfach eine einzige Zeichenfolge 'list = 'abc ... xyz1234567890 ABC ... XYZ'' – chepner

+0

als eine Randnotiz, wenn Sie Ihre Liste ähnlich ist, haben Sie Python String-Modul gesehen? Speziell string.ascii_letters und string.digits? –

+0

nach dem Importieren der Zeichenfolge, Mylist = Liste (string.ascii_lowercase + string.digits + "" + string.ascii_uppercase) geben Sie fast genau das, was Sie haben (mit der Position 0 geändert), oder entfernen Sie die Liste(), um was zu bekommen @chepner schlug vor. –

Antwort

4

Sie können das Array in Scheiben schneiden, um es zu testen.

random.sample(seq[:26], k=8) 
1

Firsty benötigen Sie bitte den random module:

import random 

Dann würde ich diese Lösung verwenden:

your_list = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q', 
     'r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9', 
     '0'," ",'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P', 
     'Q','R','S','T','U','V','W','X','Y','Z'] 

first_26_characters = your_list[0:26] # get items from 0 to 26 in new list 
random.shuffle(first_26_characters) # shuffle new list 
random_8_characters = first_26_characters[0:8] # get first 8 characters because after shuffle they are random 

Ich hoffe, das hilft!

Verwandte Themen