1. WE生活首页
  2. 玩转数码

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

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

fc2dc3cd050d46d4b6309cafa003c415noop.image_ 第2张

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

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

例如有以下切片:

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

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

6437438485f0402fa330549b2f9453b2noop.image_ 第4张

结果是:

ea06565a4fb94f1494c05e58ea55e5c9noop.image_ 第6张

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

验证如下所示:

7b56504ec4ac48b094a47fb6b067543enoop.image_ 第8张

结果是:

cdf9a679118647f58ef4287bf3810844noop.image_ 第10张

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

4965a81b8bfe4206bf61682ddb7f089fnoop.image_ 第12张

输出结果是:

c6ce106f5115496aac113cf22e7c5e1fnoop.image_ 第14张

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

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

76da39a0340c43509ebae7160656adc4noop.image_ 第16张

输出结果是:

eeccaba840f4447db94afd253974f122noop.image_ 第18张

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

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

cb7e082200234837b8e50424da825f37noop.image_ 第20张

结果是:

681aaa3534d54648ba4e371d71751b50noop.image_ 第22张

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

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

代码如下:

fa76ed2020714a8e94a3433cd14f2197noop.image_ 第24张

输出的结果是:

c4994ea164ee4d1eb4fb3c7c5b900881noop.image_ 第26张

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

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

我们可以来验证一下:

fe588d431d42425791080129a27cefbenoop.image_ 第28张

输出结果是:

ba4c7bc0d9784d5fbfb35b9dc67f5b49noop.image_ 第30张

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

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

b2c02999979049b0adbbad26c6ad3e71noop.image_ 第32张

对应的结果:

bad3cdd825b444b4a271d7c3f65d930enoop.image_ 第34张

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

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 ivillcn@qq.com 举报,一经查实,本站将立刻删除。文章链接:https://www.badwe.com/183639/

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注