2017-10-18 15 views
1

J'ai une liste avec de nombreux personnages comme tels:Échantillon aléatoire dans une certaine plage dans une liste (tableau) | 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'] 

Je veux que le programme de choisir au hasard 8 caractères dans les 26 premiers (lettres minuscules) articles dans ma liste. Je ne vais pas supprimer ou séparer les autres éléments de ce tableau car j'en ai besoin plus tard pour une chose similaire. Je suis un peu novice en programmation et je préfère une solution simple, même si je ne vous empêche pas de mettre quelque chose de plus complexe à la portée des autres.

Merci d'avance!

+1

Habituellement, vous n'avez pas besoin d'une liste pour ce type de séquence de chaînes de caractères à 1 caractère; il suffit d'utiliser une seule chaîne 'list = 'abc ... xyz1234567890 ABC ... XYZ'' – chepner

+0

comme une note de côté, si votre liste est similaire à celle avez-vous vu le module de chaîne de python? Plus précisément string.ascii_letters et string.digits? –

+0

après l'importation de la chaîne, mylist = list (string.ascii_lowercase + string.digits + "" + string.ascii_uppercase) vous donnera presque exactement ce que vous avez (avec la position de 0 changé), ou supprimer la liste() pour obtenir ce que @chepner a suggéré. –

Répondre

4

Vous pouvez découper la matrice pour l'échantillonner.

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

Firsty vous avez besoin du random module:

import random 

Alors j'utiliser cette solution:

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 

J'espère que cela aide!