Python入门【序列、列表简介、列表的创建 、列表元素的增加、列表元素的删除 】(四)-全面详解(学习总结---从入门到深化)

👏作者简介:大家好,我是爱敲代码的小王,CSDN博客博主,Python小白
📕系列专栏:python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发
📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
🍂博主正在努力完成2023计划中:以梦为马,扬帆起航,2023追梦人

🔥🔥🔥 python入门到实战专栏:从入门到实战
🔥🔥🔥 Python爬虫开发专栏:从入门到实战
🔥🔥🔥 Python办公自动化专栏:从入门到实战
🔥🔥🔥 Python数据分析专栏:从入门到实战
🔥🔥🔥 Python前后端开发专栏:从入门到实战

          序列

序列的本质和内存结构 

 列表简介

列表的创建 

list()创建

 列表元素的增加

extend()方法

 insert()插入元素

乘法扩展

列表元素的删除 

del 删除 

pop()方法 

实时效果反馈


序列

序列的本质和内存结构 

序列是一种数据存储方式,用来存储一系列的数据。在内存中,序列就是一块用来存放多个值的连续的内存空间。比如一个整数序列 [10,20,30,40],示意表示:

由于Python3中一切皆对象,在内存中实际是按照如下方式存储的: 

从图示中,我们可以看出序列中存储的是整数对象的地址,而不是 整数对象的值。 

 列表简介

1、列表:用于存储任意数目、任意类型的数据集合。

2、列表是内置可变序列,是包含多个元素的有序连续的内存空间。

列表的标准语法格式: a = [10,20,30,40] 其中,10,20,30,40这些称为:列表a的元素。

3、列表中的元素可以各不相同,可以是任意类型。比如: a = [10,20,'abc',True]

4、Python的列表大小可变,根据需要随时增加或缩小。

列表对象的常用方法汇总如下,方便大家学习和查阅。

 字符串和列表都是序列类型,一个字符串是一个字符序列,一 个列表是任何元素的序列。我们前面学习的很多字符串的方 法,在列表中也有类似的用法,几乎一模一样。

实时效果反馈 

1. python中,关于序列说法错误的是:

A 字符串和列表都是序列类型

B 列表中的元素可以各不相同,但类型必须一致

C 列表:用于存储任意数目、任意类型的数据集合

D 内存中,序列就是一块用来存放多个值的连续的内存空间

列表的创建 

基本语法 [] 创建

a = [10,20,'gaoqi','sxt']
b = []   #创建一个空的列表对象
print(a)

list()创建

使用list()可以将任何可迭代的数据转化成列表。

a = list() #创建一个空的列表对象
b = list(range(10))   #结果:[0, 1, 2, 3, 4,5, 6, 7, 8, 9]
c = list("gaoqi,sxt") #结果:['g', 'a', 'o','q', 'i', ',', 's', 'x', 't']

range()创建整数列表

range()可以帮助我们非常方便的创建整数列表,这在开发中及其有用。

语法格式为:range([start,] end [,step])

start参数:可选,表示起始数字。默认是0

end参数:必选,表示结尾数字。

step参数:可选,表示步长,默认为1 

⚠️python3中range()返回的是一个range对象,而不是列表。 我们需要通过list()方法将其转换成列表对象。 

典型示例如下:

a = list(range(3,15,2)) #结果:[3, 5, 7, 9,11, 13]
b = list(range(15,9,-1)) #结果:[15, 14, 13,12, 11, 10]
c = list(range(3,-4,-1)) #结果:[3, 2, 1, 0,-1, -2, -3]
print(a,b,c)

 推导式生成列表(简介一下,重点在for循环后讲)

使用列表推导式可以非常方便的创建列表,在开发中经常使用。

⚠️但是,由于涉及到for循环和if语句。在此,仅做基本介绍。 在我们控制语句后面,会详细讲解更多列表推导式的细节。

#循环创建多个元素 [0, 2, 4, 6, 8]
a = [x*2 for x in range(5)]
#通过if过滤元素[0, 18, 36, 54, 72, 90, 108,126, 144, 162, 180, 198]
b = [x*2 for x in range(100) if x%9==0]
print(a,b)

 实时效果反馈

1. 要创建列表[10,20,30,40,50,60,70,80,90],如下代码错误的是:

A a = [10,20,30,40,50,60,70,80,90]

B b = [x*10 for x in range(1,10)]

C c = [x*10 for x in range(10) if x>0]

D d = list(range(10)*10)

 列表元素的增加

当列表增加和删除元素时,列表会自动进行内存管理,大大减 少了程序员的负担。但这个特点涉及列表元素的大量移动,效 率较低。

⚠️除非必要,我们一般只在列表的尾部添加元素或删除元素, 这会大大提高列表的操作效率。 

append()方法 

原地修改列表对象,是真正的列表尾部添加新的元素,速度最快, 推荐使用。

a = [20,40]

a.append(80)

print(a)       #结果:[20, 40, 80] 

+运算符操作 

并不是真正的尾部添加元素,而是创建新的列表对象;将原列表的元素和新列表的元素依次复制到新的列表对象中。这样,会涉及大量的复制操作,对于操作大量元素不建议使用。

a = [20,40]
print(id(a))
a = a+[50]
print(id(a)) #两次地址不一样,创建了新的对象

通过如上测试,我们发现变量a的地址发生了变化。也就是创建了新的列表对象。

extend()方法

将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象。

a = [20,40]
print(id(a))
b = [50,60]
a.extend(b)     #原对象修改
print(id(a))
a = a+b         #产生新对象
print(id(a))

 insert()插入元素

使用 insert() 方法可以将指定的元素插入到列表对象的任意制定位置。 这样会让插入位置后面所有的元素进行移动,会影响处理速度。涉 及大量元素时,尽量避免使用。类似发生这种移动的函数还有: remove() 、 pop() 、 del() ,它们在删除非尾部元素时也会发生操作位置 后面元素的移动。

a = [10,20,30]
a.insert(2,100)
print(a)   #结果:[10, 20, 100, 30]

乘法扩展

使用乘法扩展列表,生成一个新列表,新列表元素是原列表元素的多次重复。

a = ['wxs',100]
b = a*3
print(a) #结果:['wxs', 100]
print(b) #结果:['wxs', 100, 'wxs', 100,'wxs', 100]

 适用于乘法操作的,还有:字符串、元组。例如:

c = 'wxs'
d = c*3     #结果:'wxswxswxs'

实时效果反馈

1. 在列表[10,20,30]后添加元素40,如下代码,正确并且速度最快的是:

A [10,20,30]+[40]

B [10,20,30]*40

C [10,20,30].append(40)

D [10,20,30].insert(2,40)

列表元素的删除 

del 删除 

删除列表指定位置的元素。

a = [100,200,888,300,400]
del a[2]
print(a)   #结果:[100,200,300,400]

pop()方法 

pop()删除并返回指定位置元素,如果未指定位置则默认操作列表最后一个元素。

a = [10,20,30,40,50]
b1 = a.pop()   #结果:b1=50
print(a,b1) #结果:[10, 20, 30, 40] 50
b2 = a.pop(1)
print(a,b2) #结果:[10, 30, 40],20

 remove()方法

删除首次出现的指定元素,若不存在该元素抛出异常。

a = [10,20,30,40,50,20,30,20,30]
a.remove(20)   #[10, 30, 40, 50, 20, 30, 20,30]
a.remove(100) #报错:ValueError:list.remove(x): x not in list

实时效果反馈

1. 删除 a = [10,20,30,40,50] 最后一个元素50,如下代码错误的是:

A a.pop()

B a.remove(50)

C del a[50]

D a.pop(4)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值