You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中对空列表按索引赋值触发IndexError错误的原因是什么?

错误原因说明

你遇到的报错是Python列表的基础规则导致的:空列表无法通过超出当前长度的下标索引直接赋值。
你初始化时定义的n = []是长度为0的空列表,第一次循环i取值为0时,你尝试对n[0]赋值,但此时列表中不存在索引为0的位置,因此直接触发索引越界错误。

两种合法的列表填充逻辑

1. 预先固定列表长度

如果要使用索引赋值,你需要先初始化指定长度的列表,提前给每个位置预留存储空间,你的原始代码只需要修改列表初始化的一行即可正常运行:

# 预先创建长度为10的列表,所有元素初始为0
n = [0] * 10
for i in range(10):
    a = int(input())
    n[i] = a%42
s = set(n)
print(len(s))

这种方式适合你提前明确知道要存储的元素数量的场景。

2. 动态扩展列表

也就是你修改后用到的append()方法,append()会自动将新元素追加到列表的末尾,列表长度会自动同步增加,不需要提前指定长度,适合不确定最终存储元素数量的场景。

简化实现参考

你这个需求可以直接用集合推导式实现,代码更简洁:

print(len({int(input()) % 42 for _ in range(10)}))

内容的提问来源于stack exchange,提问作者danny lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 06:45:07