list不能修改不存在的项 IndexError: list assignment index out of range

Python初学者陷阱:IndexError与列表修改
在学习Python时遇到`IndexError: list assignment index out of range`错误,该错误源于尝试修改列表中不存在的索引。文章通过一个实践例子解释了问题所在,并澄清了列表赋值和增加新元素的区别,强调了'='符号只能用于修改已有元素,不能用于添加新元素。此外,介绍了append(), extend(), insert()和+加号四种添加新元素的方法。" 114112460,10547542,Java ZMQ API:使用poll方法进行请求响应,"['Java', 'ZMQ', '网络通信', '异步编程', 'API使用']

最近几天从头开始学习python,正好刚开始看《Python数据分析基础教程:NumPy学习指南(第2版)》这本书,第八页有一个动手实践

假设我们需要对两个向量a和b做加法。这里的向量即数学意义上的一维数组。向量a的取值为0~n的整数的平方,例如n取3时,向 量a为0、1或4。向量b的取值为0~n的整数的立方,例如n取3时,向量b为0、1或8。用纯Python 代码应该怎么写呢?

我就自己写了一个函数

def sum(n):
    a=range(n)
    b=range(n)
    c=[]
    for i in range(len(a)):
        a[i]=i**2
        b[i]=i**3
        c[i]=a[i]+b[i]
    return c

这里range()函数产生一个列表对象

range()函数内只有一个参数,则表示会产生从0开始计数的整数列表:
range(4)

感觉看起来来挺正常的,结果一运行

>>>sum(3)

IndexErrorTraceback (most recent call last)
<ipython-input-3-1921985b81e4> in <module>()
----> 1 sum(3)

<ipython-input-2-5afca1d241e4> in sum(n)
      6         a[i]=i**2
      7         b[i]=i**3
----> 8         c[i]=a[i]+b[i]
      9     return c
     10 

IndexError: list assignment index out of range

上网找问题原因,Stack Overflow上有人这么回答

c is an empty list, but you’re attempting to write to element [0] in the first iteration, which doesn’t exist yet.

感觉解释的不清不楚,又另找了一个博客

———————— List的修改 ————————
修改一个List非常容易,和一般的赋值没什么大区别:
>>>nums = [1,2,3]
>>>nums[2] = 25
>>>nums
[1, 2, 25]
>>> nums[3] = 25
Traceback (most recent call last):
File ” <stdin>, line 1, in <module>
IndexError: list assignment index out of range
在已存在的List的项中,如num[2],可以像一般的变量一样赋值。
注意:不能修改不存在的项。

所以就是说“=”只能用来修改list中已有的项,不可以用来增加新的元素
那么增加新的元素,有四种方法:
append(),extend(),insert(), +加号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值