2016-09-15 72 views
0
names = ['Bob', 'Jessica', 'Mary', 'John', 'Mel'] 
import random 
random.seed(500) 
random_names = [names[random.randint(low = 0, high = len(names))] for i in range(1000)] 

目标是使用上述五个随机列表来创建1,000个名称。但上面的代码抛出回以下错误:TypeError:randint()得到了意想不到的关键字参数'low'

Traceback (most recent call last): 
    File "<pyshell#88>", line 1, in <module> 
    random_names = [names[random.randint(low = 0, high = len(names))] for i in range(1000)] 
TypeError: randint() got an unexpected keyword argument 'low' 

回答

2

删除lowhigh和你的代码将正常工作。即random.randint(0, len(names)-1)

然而,更有效的方式做到这一点是使用random.choice()

>>> [random.choice(names) for i in range(10)] 
['Mel', 'Mary', 'Mary', 'John', 'Bob', 'Mel', 'John', 'Jessica', 'Jessica', 'John'] 
+0

卸下低和高显示以下错误:回溯(最后最近一次调用): 文件 “”,第1行,在 random_names = [名称[random.randint (0,len(names))] for i in range(1000)] IndexError:列表索引超出范围Random.choice虽然工作。谢谢。 –

+1

这是由于另一个问题。你必须在'randint'中使用'len(names)-1',因为如果列表中的len是'N',索引将只能达到'N-1' –

0

(进口numpy的将做到这一点)

进口numpy的为NP

np.random.seed(500 )

random_names = [names [np.random.randint(low = 0,high = len(names))]我在

范围(1000)]

打印前10个记录

random_names [:10]

(其结果将是如下)

缺货[8]: ['玛丽”, '杰西卡', '杰西卡', '鲍勃', '杰西卡', '杰西卡', '杰西卡', '玛丽', '玛丽', '玛丽']

+0

你可以格式化你的代码吗? – WhatsThePoint

相关问题