python 列表元素的增加

来源:千锋教育
发布时间:2023-11-08 07:37:22
分享

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

>>>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培训机构:千锋教育。

声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • 详析python多行代码注释快捷键的用法 我们在敲击代码时,遇到不需要使用的语句,大家是否一行一行的删除?这样工作量可谓庞大,今天给大家带来关于注释的快捷键使用,一起来看看吧~关于python编程注释快捷键1、注释单行(1)方法1:直接在单行
  • python字符串大小写转换 如果想要得心应手的去使用python语言,那么对于python的字符串大小一定要认真了解,下面给大家整理关于python字符串大小用法和示例,便于大家理解!1、capitalize()描述:将字符串的
  • python为啥运行效率不高 python运算效率低,具体是什么原因呢,下列罗列一些:原因:1、python是动态语言;2、python是解释执行,但是不支持JIT;3、python中一切都是对象,每个对象都需要维护引用计数,增加
  • python中堆排序算法实现 在使用python中,你会遇到一个词,就是堆排序。那堆排序是什么呢?堆排序看字面意思是一种排序方法,那堆是什么呢?堆是一个近似完全二叉树的结构,并同时满足堆积的性质。其实堆排序是指利用堆这种数据结构所
  • python中如何将华氏温度转换为摄氏温度? 我们都知道表示温度的方式除了摄氏温度还有华氏温度。摄氏温度c,将其转化为华氏温度f,转换公式为:f=c*9/5+32。华氏度比摄氏度较小,一华氏度等于5/9摄氏度,彼此间的转换很容易。将摄氏度转成华氏
  • python中seed随机函数如何生成随机数? 如果要考察某公司的牛奶产品质量,可以从100袋牛奶中抽取30袋,在随机数表中选中一数,并用向上、下、左、右不同的读法组成30个数,并按牛奶的标号进行检测,虽然麻烦,但很常用。在日常生活中,随机数起着很