最近几天从头开始学习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(), +加号