从数组

时间:2018-01-15 00:56:27

标签: python python-3.x random

我正在尝试从我的数组中选择一个随机元素。

然而,有时我得到一个索引越界错误,即使我通过在索引的最大值上加1来考虑从0开始的数组。

from random import randint

names = ['Sam', 'Paul', 'Mark', 'Simon', 'Sean', 'Samantha', 'Ellen']
random_name = names[randint(0, len(array)+1)]

print(random_name)

我有时只会得到索引超出范围的错误?

2 个答案:

答案 0 :(得分:3)

为什么不只是选择?

import random

names = ['Sam', 'Paul', 'Mark', 'Simon', 'Sean', 'Samantha', 'Ellen']
random_name = random.choice(names)

print(random_name)

答案 1 :(得分:2)

您需要 中删除 1,而不是 添加 1 names的长度,因为在python中,列表的初始元素被赋予索引0

random_name = names[randint(0, len(names)-1)]

替代解决方案

但是,对于这种特殊情况,我认为使用 random.choice 会更合适,特别是因为您在使用它时根本不必担心列表索引:< / p>

>>> import random
>>> names = ['Sam', 'Paul', 'Mark', 'Simon', 'Sean', 'Samantha', 'Ellen']
>>> random.choice(names)
'Mark'