百科狗-知识改变命运!
--

python 列表元素的增加

是丫丫呀1年前 (2023-11-21)阅读数 20#技术干货
文章标签列表

可以使用“+”运算符将元素添加到列表中。

>>>aList=[3,4,5]

>>>aList=aList+[7]

>>>aList

[3,4,5,7]

严格意义上来讲,这并不是真的为列表添加元素,而是创建了一个新列表,并将原列表中的元素和新元素依次复制到新列表的内存空间。由于涉及大量元素的复制,该操作速度较慢,在涉及大量元素添加时不建议使用该方法。

使用列表对象的append()方法在当前列表尾部追加元素,原地修改列表,是真正意义上的在列表尾部添加元素,速度较快。

>>>aList.append(9)

>>>aList

[3,4,5,7,9]

所谓“原地”,是指不改变列表在内存中的首地址。

python采用的是基于值的自动内存管理方式,当为对象修改值时,并不是真的直接修改变量的值,而是使变量指向新的值,这对于Python所有类型的变量都是一样的。

>>>a=[1,2,3]

>>>id(a)#返回对象的内存地址

20230752

>>>a=[1,2]

>>>id(a)

20338208

列表中包含的是元素值的引用,而不是直接包含元素值。

如果是直接修改序列变量的值,则与Python普通变量的情况是一样的

如果是通过下标来修改序列中元素的值或通过可变序列对象自身提供的方法来增加和删除元素时,序列对象在内存中的起始地址是不变的,仅仅是被改变值的元素地址发生变化,也就是所谓的“原地操作”。

>>>a=[1,2,4]

>>>b=[1,2,3]

>>>a==b

False

>>>id(a)==id(b)

False

>>>id(a[0])==id(b[0])

True

>>>a=[1,2,3]

>>>id(a)

25289752

>>>a.append(4)

>>>id(a)

25289752

>>>a.remove(3)

>>>a

[1,2,4]

>>>id(a)

25289752

>>>a[0]=5

>>>a

[5,2,4]

>>>id(a)

25289752

使用列表对象的extend()方法可以将另一个迭代对象的所有元素添加至该列表对象尾部。通过extend()方法来增加列表元素也不改变其内存首地址,属于原地操作。

>>>a.extend([7,8,9])

>>>a

[5,2,4,7,8,9]

>>>id(a)

25289752

>>>aList.extend([11,13])

>>>aList

[3,4,5,7,9,11,13]

>>>aList.extend((15,17))

>>>aList

[3,4,5,7,9,11,13,15,17]

使用列表对象的insert()方法将元素添加至列表的指定位置。

>>>aList.insert(3,6)#在下标为3的位置插入元素6

>>>aList

[3,4,5,6,7,9,11,13,15,17]

应尽量从列表尾部进行元素的增加与删除操作。

列表的insert()可以在列表的任意位置插入元素,但由于列表的自动内存管理功能,insert()方法会引起插入位置之后所有元素的移动,这会影响处理速度。

类似的还有后面介绍的remove()方法以及使用pop()函数弹出列表非尾部元素和使用del命令删除列表非尾部元素的情况。

importtime

defInsert():

a=[]

foriinrange(10000):

a.insert(0,i)

defAppend():

a=[]

python 列表元素的增加

foriinrange(10000):

a.append(i)

start=time.time()

foriinrange(10):

Insert()

print('Insert:',time.time()-start)

start=time.time()

foriinrange(10):

Append()

print('Append:',time.time()-start)

上面代码运行结果如下:

Insert:0.578000068665

Append:0.0309998989105

使用乘法来扩展列表对象,将列表与整数相乘,生成一个新列表,新列表是原列表中元素的重复。

>>>aList=[3,5,7]

>>>bList=aList

>>>id(aList)

57091464

>>>id(bList)

57091464

>>>aList=aList*3

>>>aList

[3,5,7,3,5,7,3,5,7]

>>>bList

[3,5,7]

>>>id(aList)

57092680

>>>id(bList)

57091464

当使用*运算符将包含列表的列表重复并创建新列表时,并不是复制子列表值,而是复制已有元素的引用。因此,当修改其中一个值时,相应的引用也会被修改。

>>>x=[[None]*2]*3

>>>x

[[None,None],[None,None],[None,None]]

>>>x[0][0]=5

>>>x

[[5,None],[5,None],[5,None]]

>>>x=[[1,2,3]]*3

>>>x[0][0]=10

>>>x

[[10,2,3],[10,2,3],[10,2,3]]

以上内容为大家介绍了python列表元素的增加,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:开发教育。

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)