详解python中append后面的参数 append函数用法

在第一节中,已经给大家讲解过切片与数组很大的一个区别就是:切片的长度是不固定的,可以向已经定义的切片中追加数据 。并且也给大家简单的演示过通过append的函数,在原切片的末尾添加元素 。

详解python中append后面的参数 append函数用法

文章插图
文章插图
(问题,以上案例容量的变化,将整型换成“字符串”容量的变量)
问题:可能有同学会问,如果容量不够用了 , 该怎么办呢?
例如有以下切片:
s:= make([]int, 5, 8)
定义了切片s,长度是5 , 容量是8
详解python中append后面的参数 append函数用法

文章插图
文章插图
结果是:
详解python中append后面的参数 append函数用法

文章插图
文章插图
并且前面我们讲解过 , 长度是指已经初始化的空间,现在切片s没有赋值,但是默认值为0
验证如下所示:
详解python中append后面的参数 append函数用法

文章插图
文章插图
结果是:
详解python中append后面的参数 append函数用法

文章插图
文章插图
现在开始通过append函数追加数据,如下所示:
详解python中append后面的参数 append函数用法

文章插图
文章插图
输出结果是:
详解python中append后面的参数 append函数用法

文章插图
文章插图
从输出的结果上,我们完全能够体会到,append函数的作用是在末尾追加(直接在默认值后面追加数据),由于追加了一个元素 , 所以长度为6.
但是如果我们把程序修改成如下所示:
详解python中append后面的参数 append函数用法

文章插图
文章插图
输出结果是:
详解python中append后面的参数 append函数用法

文章插图
文章插图
由于s[0]=1是直接给下标为0的元素赋值,并不是追加 , 所以结果的长度不变 。
下面我们继续通过append( )继续追加数据:
详解python中append后面的参数 append函数用法

文章插图
文章插图
结果是:
详解python中append后面的参数 append函数用法

文章插图
文章插图
追加完成3个数据后 , 长度变为了8,与容量相同 。
那么如果现在通过append( )函数,继续向切片s中继续追加一个数据 , 那么容量会变为多少呢?
代码如下:
详解python中append后面的参数 append函数用法

文章插图
文章插图
输出的结果是:
【详解python中append后面的参数 append函数用法】
详解python中append后面的参数 append函数用法

文章插图
文章插图
追加完成一个数据后,长度变为9,大于创建切片s时的容量,所以切片s扩容,变为16.
那么切片的容量是否是以2倍容量来进行扩容的呢?
我们可以来验证一下:
详解python中append后面的参数 append函数用法

文章插图
文章插图
输出结果是:
详解python中append后面的参数 append函数用法

文章插图
文章插图
通过以上结果分析,发现是2倍的容量进行扩容 。
但是我们修改一下循环条件看一下结果 , 将循环结束的条件修改的大一些,如下所示:
详解python中append后面的参数 append函数用法

文章插图
文章插图
对应的结果:
详解python中append后面的参数 append函数用法

文章插图
文章插图
通过以上的运行结果分析:当容量小于1024时是按照2倍容量扩容 , 当大于等于1024是不是按照2倍容量扩容 。