python 列表元素的增加
可以使用“+”运算符将元素添加到列表中。
>>>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=[]
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培训机构:千锋教育。

相关推荐HOT
更多>>
Python中关于OPP的常用术语
1抽象/实现抽象指对现实世界问题和实体的本质表现,行为和特征建模,建立一个相关的子集,可以用于绘程序结构,从而实现这种模型。抽象不仅包括这种...详情>>
2023-11-07 23:14:05
Python常用切片操作
以列表:a=[0,1,2,3,4,5,6,7,8,9]为说明对象1.取偶数位置>>>b=a[::2][0,2,4,6,8]2.取奇数位置>>>b=a[1::2][1,3,5,7,9]3.拷贝整个对象>...详情>>
2023-11-07 21:50:59
Python和PHP的区别
从开发的角度来看,PHP是面向WEB的语言。PHP应用程序更像是一组单独的脚本,甚至只是一个单独入口。而Python是多用途语言,也可以用于WEB开发,...详情>>
2023-11-07 21:16:11
Python与Node.JS
在进行新项目时选择正确的编程语言可能是程序员经常做出的比较艰巨的决定之一。这个挑战背后的原因是,每个新项目都会遇到一个独特的问题,并且...详情>>
2023-11-07 19:44:41