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

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

 

fc2dc3cd050d46d4b6309cafa003c415noop.image_

 

(问题,以上案例容量的变化,将整型换成“字符串”容量的变量)

问题:可能有同学会问,如果容量不够用了,该怎么办呢?

例如有以下切片:

s:= make([]int, 5, 8)

定义了切片s,长度是5,容量是8

 

6437438485f0402fa330549b2f9453b2noop.image_

 

结果是:

 

ea06565a4fb94f1494c05e58ea55e5c9noop.image_

 

并且前面我们讲解过,长度是指已经初始化的空间,现在切片s没有赋值,但是默认值为0

验证如下所示:

 

7b56504ec4ac48b094a47fb6b067543enoop.image_

 

结果是:

 

cdf9a679118647f58ef4287bf3810844noop.image_

 

现在开始通过append函数追加数据,如下所示:

 

4965a81b8bfe4206bf61682ddb7f089fnoop.image_

 

输出结果是:

 

c6ce106f5115496aac113cf22e7c5e1fnoop.image_

 

从输出的结果上,我们完全能够体会到,append函数的作用是在末尾追加(直接在默认值后面追加数据),由于追加了一个元素,所以长度为6.

但是如果我们把程序修改成如下所示:

 

76da39a0340c43509ebae7160656adc4noop.image_

 

输出结果是:

 

eeccaba840f4447db94afd253974f122noop.image_

 

由于s[0]=1是直接给下标为0的元素赋值,并不是追加,所以结果的长度不变。

下面我们继续通过append( )继续追加数据:

 

cb7e082200234837b8e50424da825f37noop.image_

 

结果是:

 

681aaa3534d54648ba4e371d71751b50noop.image_

 

追加完成3个数据后,长度变为了8,与容量相同。

那么如果现在通过append( )函数,继续向切片s中继续追加一个数据,那么容量会变为多少呢?

代码如下:

 

fa76ed2020714a8e94a3433cd14f2197noop.image_

 

输出的结果是:

 

c4994ea164ee4d1eb4fb3c7c5b900881noop.image_

 

追加完成一个数据后,长度变为9,大于创建切片s时的容量,所以切片s扩容,变为16.

那么切片的容量是否是以2倍容量来进行扩容的呢?

我们可以来验证一下:

 

fe588d431d42425791080129a27cefbenoop.image_

 

输出结果是:

 

ba4c7bc0d9784d5fbfb35b9dc67f5b49noop.image_

 

通过以上结果分析,发现是2倍的容量进行扩容。

但是我们修改一下循环条件看一下结果,将循环结束的条件修改的大一些,如下所示:

 

b2c02999979049b0adbbad26c6ad3e71noop.image_

 

对应的结果:

 

bad3cdd825b444b4a271d7c3f65d930enoop.image_

 

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

本文内容来自网友供稿,文章观点仅代表作者本人,本站非盈利且无偿提供信息存储空间服务,不拥有所有权,如有文章有不实信息或侵犯了您的权益,请发送邮件至 cfseo1997@163.com 反馈核实,如需转载请注明出处:https://www.taobobolive.com/44494.html

(0)
上一篇 2023年1月12日 09:50:23
下一篇 2023年1月12日 09:52:27

相关推荐