list 列表和 dict 字典是 Python 最常用的数据结构,其次 tuple 元组,最后 set 集合;set 集合只有一些特殊场景会用到。
列表是一种有序的集合(和数学中的数组类似),其中的元素可以随时添加和删除,是Python 中最基本的数据结构之一。

一、列表定义

list 列表定义使用中括号 [ ] ,里面元素可以是任意类型,也包括列表本身,也可以是字典、元组等。
list1=['Google','woodman',1987,2017]list2=[1,2,3,4,5]list3=["a","b","c","d"]list4=[2017,'A',True,list1,list2]# 列表中可以嵌套列表,字典,元组等
注意:列表里面数据可以是任意数据类型,它的长度也是可变的,这就是动态类型好处。

二、访问列表

list 列表(序列)中的每个元素都分配一个数字索引,从0开始,第一个索引是 0,第二个索引是 1,依此类推。
我们可以通过索引号访问列表的值,如:
l=['Google','woodman',1987,2017]print('l[0]=',l[0])print('l[1]=',l[1])print('l[3]=',l[3])print('l[-1]=',l[-1])# 可以倒序访问列表,-1列表倒数第一个print('l[4]=',l[4])# 此行会报错,抛出 IndexError 异常,列表下标越界
注意:访问list时索引号不能越界,不然会抛出 IndexError 异常

三、修改和新增列表的值

我们可以对列表的数据项进行修改。可以直接通过索引号修改列表的值,也可以通过 append() 方法对列表增加值。
l=['Google','woodman',1987,2017]print('原列表',l)# 修改列表第二个值l[1]='中国人'print('修改后的列表',l)# 在列表的末尾追加值l.append('末尾追加元素')print('新增值后的列表',l)
拓展:
可以使用 insert ( index , vaule ) 方法在列表指定位置插入值,它接受两个参数,第一个参数为索引号,第二个参数是待添加的新元素。( insert () 方法很少用到,知道有这个东西就可以,重点在 append ( ) 末尾追加)
示例:
# 在第二个位置插入,插入后 后面元素向后移一位l.insert(1,'知乎')print(l)

四、删除元素

删除元素的方法有del、 pop ( )、remove () , 最常用到的是pop ( ),其次remove ( ),最后才是del。
del 、 pop ( )、remove ( ) 他们之间存在明显的区别,
1、del 通过指定具体值删除
del 是Python 内置用于删除变量的引用(如果比较难理解,你可认为他是删除变量),list列表中的值其实都是一个一个的变量如list[0]、list[1]、list[2]都是他们的变量名。
我们要删除一个变量,直接 【del 变量名】,之后引用变量就会抛出异常。
a=1dela# 删除变量a,解除a对1的引用print(a)# 出现NameError 异常,没有a这个变量l=['Google','woodman',1987,2017]print(l)dell[0]# 删除列表第一个元素print(l)# 输出 ['woodman', 1987, 2017]dell[0:2]# 删除列表第一到第二个元素print(l)dell# 删除整个列表print(l)# 列表无法访问,抛出 NameError ,提示无l这个变量
2、pop ( ) 通过索引号删除
l.pop ( 索引号 ) 是list 内置方法,通过列表索引号来删除list元素的方法;不指定索引号时删除最后一个元素。pop ( ) 一次只能删除一个元素。
l=['Google','woodman',1987,2017]l.pop()# 删除最后一个元素print(l)# 输出 ['Google', 'woodman', 1987]l.pop(0)# 删除列表第一个元素print(l)# 输出 ['woodman', 1987]l1=[1]# 定义一个新列表,只有一个值print(l1)# 输出 [1]l1.pop()# 删除列表的值print(l1)# 输出的是一个空列表,l1 列表还存在
3、remove ( ) 删除首个符合条件的元素
l.remove ( ) 列表内置的方法,他是根据给定值查找列表,找到符合条件的第一个值删除,它也只能一次删除一个。
l=['Google','woodman',1987,2017,1987,'woodman']print(l)l.remove(1987)# 删除 1987print(l)# 注意观察值的变化,只删除了前一个 1987l.remove('woodman')# 删除 ‘woodman’print(l)# 输出 ['Google', 2017, 1987, 'woodman']l.remove(2)# 删除不存在的值会抛出 ValueError 异常

五、列表切片

列表切片和字符串切片差不多,可以分为以下几类。
1、获取多个元素的值
list[初始位置:结束位置]。
如:list[0:N],取前N个元素也就是索引为0-(N-1)的元素,从0开始取到list的索引号N-1为止,不包含索引号为N的元素。
l=['Google','woodman',1987,2017,'a',1,2,3]print(l[0:2])# 第1到第2个print(l[2:15])# 2到15个,注意如果结束位超过列表长度不会报错
2、通过步长截取
list[初始位置:结束位置:步长] , 步长表示每多少个取一个。
如:list[0:N:M]从0开每M个数取一个直到list的N-1元素为止。
l=['Google','woodman',1987,2017,'a',1,2,3]print(l[0:4:2])# 每2个数去1个,从第1到第4个# 输出 ['Google', 1987]print(l[2::3])# 从第3个取,每3个取一个,取到结尾# 输出 [1987, 1]
3、花式用法
l=['Google','woodman',1987,2017,'a',1,2,3]print(l[:3])# 从开始到list第3个元素print(l[1:])# 从第二个到list结束print(l[:])# 获得一个与l相同的listprint(l[-1])# 取倒数第一个元素print(l[::-1])# list倒叙print(l[-3:-1])# 倒数第三个到第二个print(l[-4:-1:2])# 从倒数第4个每2个取一个,到代数第二个

六、列表常用运算

1、+ 与*列表的算术运算
链接两个列表使用 + , 重复复制多个列表使用 * 。
示例:链接列表和重复复制
l1=[1,2,3]+['a','b','c']# 连接print(l1)# 结果 [1, 2, 3, 'a', 'b', 'c']l2=['Hello!']*3# 重复复制print(l2)# 结果 ['Hello!', 'Hello!', 'Hello!']
2、in 成员运算
in 判断一个元素是否在列表中,存在返回 True,否则返回 False。
not in 与in 相反,判断一个元素不存在列表中。
示例:
l1=[1,2,3,'a','b','c']print(2inl1)# Trueprint(12inl1)# Falseprint(2notinl1)# Falseprint(12notinl1)# True

七、list 列表常用函数

len( list ) 返回列表的长度
max( list ) 返回列表中元素最大值,必须是相同类型对比
min( list ) 返回列表元素最小值,必须是相同类型对比
list( tuple ) 将元组转换为列表
l=['Google','woodman',1987,2017,'a',1,2,3]print(len(l))# 列表元素个数l1=['aA','bss','Ad']print(max(l1))# 返回列表元素最大值,l1列表值必须是同类型l2=[6,2,3,5,1]print(min(l1))# 返回列表元素最小值,l1列表值必须是同类型t=(1987,2017,'a',1,2,3)print(list(t))# 将元组转换为列表

八、list列表常用方法

list.append(obj)	#在列表末尾添加新的对象list.count(obj)	#统计某个元素在列表中出现的次数list.extend(seq)	#在列表末尾一次性追加另一个序列中的多个值list.index(obj)	#从列表中找出第一个匹配项的索引位置list.insert(index, obj)	#将对象插入列表index位置list.pop(obj=list[-1])	#移除列表中的一个元素(默认最后一个),返回移除值list.remove(obj)	#移除列表中的第一个匹配到的值list.reverse()	#反向列表中元素list.sort([func])	#对原列表进行排序list.clear()	#清空列表list.copy()	#复制列表
注意:Python 一切皆对象,变量是对象,函数式对象,方法是对象,类是对象,他的一切都是对象
l=['Google','woodman',1987,2017,'a',1,2,3]l1=[7,8,9]l.append('a')# 在列表末尾添加新的对象print(l)print(l.count('a'))# 统计某个元素在列表中出现的次数l.extend(l1)# 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)print(l)l.index(1987)# 从列表中找出某个值第一个匹配项的索引位置print(l)l.insert(2,'woodman')# 将对象插入列表print(l)l.pop()# 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值print(l)l.remove('a')# 移除列表中某个值的第一个匹配项l.reverse()# 反向列表中元素print(l)l2=l.copy()# 复制列表print(l2)l.clear()# 清空列表print(l)l3=[3,4,2,9,4]l3.sort()# 对原列表进行排序print(l3)

思维导图