Python基础——列表类型整理
组合数据类型
1 .列表类型
概念:列表(list)是0个或多个对象引⽤的有序序列,属于序列类型。与元组不同,列表的长度和内容都是可变的,可⾃由对列表中的数据进⾏增删改查。列表没有长度限制,元素类型可以不同,使⽤起来⾮常灵活。
拓展: 列表和数组
每种编程语⾔都提供⼀个或多个表⽰⼀ 组元素的⽅法,例如,C语⾔采⽤数:组,Python采⽤列表。在⼤多数语⾔中,数组⼗分常见,仅有少量语⾔采⽤列表⽽不是数组。列表和数组类似,但并不完全⼀样,列表和数组有两个显著不同。
python获取数组长度第⼀,数组需要预先分配⼤⼩,列表则不需要。当创建⼀个数组时,必须指定数组的⼤⼩,即它能容纳元素的个数。如果不知道有多少元素,必须假设-⼀个最⼤可能的数值,再按照这个最⼤值分配⼀个数组,并记录数组中实际存储元素的个数,以保证实际使⽤的元素数量不超过数组的限制。列表则没有预分配⼤⼩的要求和限制,创建列表变量时不需要知道元素个数,可以在使⽤中动态插⼊任何数量的元素。
第⼆,数组要求元素类型⼀致,列表则不需要。数组要求每个元素具有相同的数据类型,如果某个元素是整数,则数组中全部元素都是整数。列表没有上述限制, 列表中不同元素的类型可以相同, 也可以不同,甚⾄,列表中的元素也可以是列表类型。列表的这个特点⼗分灵活,为程序编写提供了很⼤的设计空间。
☆列表类型的操作。常⽤函数或⽅法如下表:
函数或⽅法描述
ls[i] = x替换列表ls第i数据项为x
ls[i:j] = lt⽤列表lt替换列表ls中的i到j项数据(不含j,下同)
ls[i:j:k]⽤列表lt替换列表ls中i到j项以k为步长的数据
del ls[i:j]删除列表i到j的数据
del ls[i:j:k]删除列表i到j的数据,以k为步长
ls += lt 或 ls.extend(lt)将列表增加到列表ls中
ls *= n复制列表ls n次
ls.append(x)在ls中追加⼀个元素x
ls.clear()删除所有ls⾥的数据
ls.insert(i,x)在列表的i位置插⼊x元素
ls.pop(i)在ls中取⾛并删除i元素
ls.index(x[,[i[,j])返回查x第⼀次出现的索引,i为开始查,j为结束查。
>>> a =[20,10,50,40,30]#列表的创建
>>>type(a)
<class'list'>
>>> student =['张三','李四','王五']#列表的追加
>>> student.append('陈六')
>>> student
["张三",'李四','王五','陈六']
>>> student +=['貂蝉','猪⼋戒']
>>> student
['张三','李四','王五','陈六','貂蝉','猪⼋戒']
>>> d('张飞','关⽻')
['张三','李四','王五','陈六','貂蝉','猪⼋戒','张飞','关⽻']
>>> student =['红楼梦','⽔浒传']#插⼊元素
>>> student.insert(1,'三国演义')
>>> student
['红楼梦','三国演义','⽔浒传']
>>> student =['⼴州','深圳']#替换元素
>>> student[0]="揭阳"
>>> student
['揭阳','深圳']
>>> student =['⼴东','江苏','福建']#remove删除
>>> ve('江苏')
>>>> student
['⼴东','福建']
>>> student =['⼴东','江苏','福建']#pop取⾛⽅法
>>> student.pop(1)
>>>>> student
['⼴东','福建']
>>> a =[1,2,3,4]#反转
>>> a.reverse()
>>> a
[4,3,2,1]
>>> a =[1,2,3,4]#copy复制
>>> b = a.copy()
>>> b
>[1,2,3,4]
>>> a =[1,2,3,4]#清除
>>> a.clear()
>>> a
[]
>>> student =['迈克尔·乔丹','科⽐·布莱恩特','雷阿伦']#替换元素
>>> student.index('科⽐·布莱恩特')
>>> student
1
列表⽣成式和⽣成器
我们还可以使⽤列表的⽣成式语法来创建列表,代码如下所⽰。
f = [x for x in range(1, 10)]
print(f)
f = [x + y for x in 'ABCDE' for y in '1234567']
print(f)
# ⽤列表的⽣成表达式语法创建列表容器
# ⽤这种语法创建列表之后元素已经准备就绪所以需要耗费较多的内存空间
f = [x ** 2 for x in range(1, 1000)]
sizeof(f)) # 查看对象占⽤内存的字节数
print(f)
# 请注意下⾯的代码创建的不是⼀个列表⽽是⼀个⽣成器对象
# 通过⽣成器可以获取到数据但它不占⽤额外的空间存储数据
# 每次需要数据的时候就通过内部的运算得到数据(需要花费额外的时间)
f = (x ** 2 for x in range(1, 1000))
sizeof(f)) # 相⽐⽣成式⽣成器不占⽤存储数据的空间
print(f)
for val in f:
print(val)
后期学习继续补充。
分享到这
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论