列表

  • 列表
  • 创建方式
  • 访问列表内的元素
  • 修改元素的值
  • 删除元素
  • 列表的特殊操作
  • 列表的常用函数
  • 排序和反转
  • 切片--也叫截取
  • 多维列表(嵌套列表)
  • 列表的遍历
  • 列表的内置方法


列表

列表是Python中最基本也是最常用的数据结构之一。列表中的每个元素都被分配一个数字作为索引,用来表示该元素在列表内所排的位置。第一个元素的索引是0,第二个索引是1,依此类推。

Python的列表是一个有序可重复的元素集合,可嵌套、迭代、修改、分片、追加、删除,成员判断。

从数据结构角度看,Python的列表是一个可变长度的顺序存储结构,每一个位置存放的都是对象的指针。

对于这个列表 alist = [1,“a”,[11,22],{“k1”:”v1”}],其在内存内的存储方式是这样的:

python存储列表 python列表的存储结构_后端

创建方式

创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可

['1',2,'hello']	#列表
('1',2,'hello')	#元组
{'1',2,'hello'}	#集合
{'name':'python','age':20}
for i in ['1',2,'hello']:
	print(i)
#通过查看源码来看创建的方法
l =	list(['1',2,'hello'])
print(l)
l = [1,2,3]
l1 = [1,'hello',1.2]
print(l1)
-------------------------------------------------
list = []	#定义空列表
list1 =	['physics',2002,2022]
list2 =	[1,2,3]
list3 =	["a","b","c"]

访问列表内的元素

列表从0开始为它的每一个元素顺序创建下标索引,直到总长度减一。要访问它的某个元素,以方括号加下标值的方式即可。注意要确保索引不越界,一旦访问的 索引超过范围,会抛出异常。所以,一定要记得最后一个元素的索引是len(list)-1。

python存储列表 python列表的存储结构_后端_02

修改元素的值

直接对元素进行重新赋值。

>>>	lis[0]
'a'
>>>	lis[0] = "d"
>>>	lis[0]
'd'

删除元素

使用del语句或者remove(),pop()方法删除指定的元素。

>>>	lis	= ["a","b","c"]
>>>	del lis[0]	#根据索引删除
>>>	lis
['b','c']
>>>	lis.remove("b")	#直接根据值进行删除
>>>	lis
['c']
>>>	lis.pop()	#弹出最后一个
'c'
>>>	lis
[]
l1 = [1,'hello',1]
l2 = l1.pop(1)	#根据索引来弹出	1为索引
print(l2)

列表的特殊操作

语句								结果						描述
[1,2,3]+[4,5,6]		        [1,2,3,4,5,6]		     组合两个列表
l1=[1,2,3]
l2=[4,5,6]
print(l1.__add__(l2))		#底层调用了__add__方法
['Hi!']*4			   ['Hi!','Hi!','Hi!','Hi!']	 列表的乘法
l1=[1,2,3]
print(l1.__mul__(3))
3 in [1,2,3]					True		 判断元素是否存在于列表中
l1=[1,2,3]
print(l1.__contains__(1))
for  x  in[1,2,3]:print x,		    123			迭代列表中的每个元素

列表的常用函数

l1 =[1,2,3]
函数					作用
len(list)		返回列表元素个数,也就是获取列表长度l1.__len__()
max(list)	    返回列表元素最大值	max(l1)	max(1,2,3,4)
min(list)		返回列表元素最小值
list(seq)		将序列转换为列表

>>>	s=list((1,"a","b",2))
>>>	s
[1,'a','b',2]
>>>	max(s)		#不能混合不同类型进行最大最小求值
Traceback	(most recent call last):
		File"<pyshell#20>",line	1,	in<module>
			max(s)
TypeError:'>'	not supported between instances of 'str'	and 'int'

排序和反转

list.reverse()		将列表反转	修改本身	*IN	PLACE*
list.sort()		    排序,默认升序
如果列表内的元素全为数字,或者字母排序没有问题。
如果字母和数字都有的情况下,排序会报错
list.sort(reverse=True)降序排列

切片–也叫截取

切片指的是对序列进行截取,选取序列中的某一段。
切片的语法是:list[start:end]
以冒号分割索引,start代表起点索引,end代表结束点索引。省略start表示以0开始,省略end表示到列表的结尾。注意,区间是左闭右开的!
如果提供的是负整数下标,则从列表的最后开始往头部查找。例如-1表示最后一个元素,-3表示倒数第三个元素。
切片过程中还可以设置步长,以第二个冒号分割,例如list[3:9:2],表示每隔多少距离取一个元素。

l3	=	['a','b','c','d','e','f']
print(l3[1])
print(l3[2])
print(l3[1:3])
print(l3[:3])
print(l3[2:])
print(l3[:])		#复制列表
print(l3[::2])		#隔一个一取
a[-1]		8
a[-5:]    [4,5,6,7,8]
a[::-1]	相当于逆序输出[8,7,6,5,4,3,2,1]
a[1:5:2]	[2,4]

多维列表(嵌套列表)

a = [[1,2,3],[4,5,6],[7,8,9]]
a[0][1]
2
a = [[1,2,3],[4,5,6],{"k1":"v1"}]
a[2]["k1"]
v1

列表的遍历

列表有好几种遍历方式:

a = [1,2,3,4,5,6]
for i in a:		#遍历每一个元素本身				
     print(i)
for i in range(len(a)):		#遍历列表的下标,通过下标取值				
     print(i,a[i])
x = 9
if x in a:		#进行是否属于列表成员的判断。该运算速度非常快。				
    print("True")
else:				
    print("False")

列表的内置方法

方法					作用
append(obj)		在列表末尾添加新的对象
count(obj)		统计某个元素在列表中出现的次数
extend(seq)		在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) 
index(obj)		从列表中找出某个值第一个匹配项的索引位置
insert(index,obj) 将对象插入列表
pop(obj=list[-1])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
remove(obj)		移除列表中某个值的第一个匹配项
reverse()		反向列表中元素
sort([func])	对原列表进行排序
copy()			复制列表
clear()			清空列表,等于del  lis[:]

注意:其中的类似 append,insert,remove等方法会修改列表本身,并且没有返回值(严格的说是返回None)。