【python基础04容器-列表】

什么是容器?
就是可以存放多个东西,可以弥补变量无法存储大量数据的缺陷。

一.列表(list)–线性表(有序)

列表基于线性表(双向链表),所以我们先来讲一下线性表的内容。
线性表:
(1).数组:数组是一种连续存放的内存结构,查询较快,但是增删改效率慢。在python中是没有数组的
(2).栈:特点:先进后出(FILO),后进先出(LIFO)
(3).队列:特点:先进先出(FIFO),后进后出
(4).链表:查询效率低,但增删改效率高
单向链表:数据+后继结点的地址
双向链表:前驱结点的地址+数据+后继结点的地址
【python的列表这种容器就是基于双向链表实现的】
--------------------------------------------------------------------
(1).列表的定义:
方法一:[python是弱数据类型语言,变量的类型由数值决定]

ls=[2,3,5,4]

方法二:使用全局函数list()

ls=list()  #空列表
ls=list([1,2.3,"hha"])

(2).如何访问列表里的元素:下标从0开始

ls=list([1,2,3,4])
ls[0]		--结果是1
#同样也通过下标来修改列表某个元素:
ls[2]=4		--ls=[1,2,4,4]
#可通过切片来获取列表中的一些元素:
ls[1:3]		--结果是[2,3],前闭后开

(3).求列表里元素个数:使用len()全局函数

ls=[1,2,3]
len(ls)

(4).如何遍历容器:for循环、while循环

#1.for循环
ls=[1,2,3]
for i in ls:
	print(i)
#2.while循环
ls=[1,2,3]
index=0
while index<len(ls):
	print(ls[index])
	index+=1

(5).列表中的方法:

#可通过dir(list)查看列表中的方法:
['append', 'clear', 'copy', 'count', 'extend', 'index', 
'insert', 'pop', 'remove', 'reverse', 'sort']
----------------ls=[1,2,3,3]-------------------------
#1.append()--向列表尾部追加元素
	ls.append(4)	--ls=[1,2,3,3,4]
#2.insert()--向指定位置添加元素
	ls.insert(0,100)	--ls=[100,1,2,3,3]
#3.sort()--排序,默认是升序(整数和字符串不能一起排序)
	ls.sort()	--ls=[1,2,3,3]
#4.reverse()--颠倒,将元素翻转
	ls.reverse()	--ls=[3,3,2,1]
#5.index()--查找元素第一次在列表中出现的位置
	ls.index(3)		--结果是3
	如果没有要查找的元素则会抛出异常:ValueError值异常 
#6.remove()--通过元素去移除(不会将相同的都移除,只移除一个)
	ls.remove(3)	--ls=[1,2,3]
	如果元素不存在,则会抛出异常:ValueError值异常
	#若要把列表中一个元素的相同元素移除完:
	ls=[1,2,3,4,4]
	while 4 in ls:
		ls.remove(4)
#7.count()--统计元素个数
	ls.count()	--结果是4
	也可以用len(ls),都是统计列表元素个数
#8.copy()--拷贝对象,是在堆内存中进行对象拷贝的
	  ls1=[]
方法一:ls1=ls	--ls1=[1,2,3,3]
方法二:ls1=ls.copy()	--ls1=[1,2,3,3]
区别:
方法一:当ls列表改变,ls=[1,2,3,3,55],那么ls1=[1,2,3,3,55]
方法二:当ls列表改变,ls=[1,2,3,3,55],那么ls1=[1,2,3,3]
原因:传递(=)是将对方(ls)的地址都传递过去了,而拷贝(copy())
只是将对方(ls)的当前值拷贝过来了。
#9.extend()--合并列表
	ls1=[22,11]
	ls1.extend(ls)	--ls1=[22,11,1,2,3,3]
#10.pop()--删除最后元素,返回值就是删掉的那个元素
	ls.pop()	--返回结果是3,且ls=[1,2,3]
#11.clear()--清除元素
	ls.clear()	--ls=[]

补充:
内存中有包括栈、堆、代码区、数据区。
栈(只是存储了一个地址),堆(指针,对象是存储在堆中),代码区(code area),数据区(data area)
#函数弹栈,全局变量不弹栈(全局变量常驻内存)

下一个讲解的容器是集合:点这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骑着蜗牛追汤圆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值