我正在尝试从我的数组中选择一个随机元素。
然而,有时我得到一个索引越界错误,即使我通过在索引的最大值上加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)
我有时只会得到索引超出范围的错误?
答案 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'