2017-10-18 60 views
1

我有在它的许多字符列表像这样:列表(数组)中的某个范围内的随机样本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'] 

我想程序随机挑选前26(小写字母)内的8个字符我的列表中的项目。我不会删除或分开这个数组中的其他项目,因为我稍后需要它们来处理类似的事情。

我对编程有点新,我更喜欢简单的解决方案,尽管我不会阻止你将更复杂的东西放到其他人看到的地方。

在此先感谢!

+1

通常,您不需要这种1字符字符串序列的列表;只是使用单个字符串'list ='abc ... xyz1234567890 ABC ... XYZ'' – chepner

+0

作为一个附注,如果你的列表类似于你见过的python的字符串模块?特别是string.ascii_letters和string.digits? –

+0

在导入字符串后,mylist = list(string.ascii_lowercase + string.digits +“”+ string.ascii_uppercase)将几乎完全给你所拥有的东西(位置0改变),或者移除list()以获得什么@chepner建议。 –

回答

4

您可以对数组进行切片,以对其进行采样。

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

Firsty您需要的random module

import random 

那我就用这个解决方案:

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 

我希望这有助于!