如何解决使用random.randint从0-229整数列表选取随机元素失败的问题
排查解决步骤
- 第一步:验证目标列表生成是否正常
先单独运行以下代码确认基础数据是否符合预期:
正常输出应为230,对应生成的列表是0-229的整数。如果输出为0,说明# 先验证筛选后的数据集长度 capomulin_data_len = len(cleaned_df.loc[cleaned_df["Drug Regimen"]=="Capomulin"]) print(capomulin_data_len)Drug Regimen列没有匹配到Capomulin的内容,需要检查列名拼写、大小写、是否有多余空格,以及数据集内容是否正确。 - 第二步:检查random相关调用的写法错误
如果你是直接用random.randint生成范围内整数,正确语法是random.randint(起始值, 结束值),两个参数都包含在返回范围内,要得到0-229的整数,正确写法是random.randint(0, 229),如果上下限写反、或者上限填成230都会报错。
如果你是通过索引从生成的列表中取值,要注意列表索引最大为长度减1,错误示例:
更推荐直接用target_list = list(range(capomulin_data_len)) # 错误写法:上限等于列表长度,会出现索引越界 random_num = target_list[random.randint(0, len(target_list))] # 正确写法 random_num = target_list[random.randint(0, len(target_list)-1)]random.choice直接从列表取元素,不需要手动计算索引范围:random_num = random.choice(target_list) - 第三步:检查模块导入是否正确
确认代码开头已经导入random模块:import random,没有导入会直接报NameError。
常见报错对应原因:
NameError: name 'random' is not defined:未导入random模块ValueError: empty range for randrange():randint参数上下限写反,或者目标列表长度为0IndexError: list index out of range:取列表元素时索引超过了列表最大下标
内容的提问来源于stack exchange,提问作者Nazih B.
相关产品推荐
相关产品推荐

