1、列表的定义
中括号进行定义
list函数定义
使用逗号分割
列表中的元素可以是任意类型,尽管这样很少用
lists=list()
lists.append('zhangsan')
lists.append('lisi')
lists.append(34)
print(lists)#['zhangsan', 'lisi', 34]
2、列表的基本运算(操作)
+运算:列表相加,组合成新的列表
list1=['zhangsan','lisi','wanger']
list2=[2.3,4,6]
res=list1+list2
print(res)#['zhangsan', 'lisi', 'wanger', 2.3, 4, 6]
*重复运算:列表元素重复
list1=['zhangsan','lisi','wanger']
res=list1*3
print(res)#['zhangsan', 'lisi', 'wanger', 'zhangsan', 'lisi', 'wanger', 'zhangsan', 'lisi', 'wanger']
- in:元素是否存在与列表
list1=['zhangsan','lisi','wanger']
res='lisi' in list1
print(res)#True
- 通过索引获取、及修改元素,不能通过下标添加元素(js可以)
- 追加元素使用append(单个元素)
list1=['zhangsan','lisi','wanger']
res=list1[-1]
print(res)#True
list1[0]='maba'
print(list1[0])#maba
list1.append('zhaoliu')
print(list1)
- len获得列表长度
- 列表元素的删除pop(),实际就是出栈的意思,返回数组
list1=['zhangsan','lisi','wanger']
res=list1[-1]
print(res)#True
list1[0]='maba'
print(list1[0])#maba
list1.append('zhaoliu')
print(list1)#['maba', 'lisi', 'wanger', 'zhaoliu']
list1.pop()
print(list1)#['maba', 'lisi', 'wanger']
3、列表中的切片
- 下标切片法
列表名[开始索引:结束索引:步进值]
list1=['zhangsan','lisi','wanger','zhaoliu','maba']
res=list1[2:]#从第三个到最后一个
print(res)#['wanger', 'zhaoliu', 'maba']
res=list1[:2]#从开始到第三个
print(res)#['zhangsan', 'lisi']
res=list1[1:4]#从第2开始到第5个
print(res)#['lisi', 'wanger', 'zhaoliu']
- 列表反转:列表名[::-1]
需要就是从倒数第几个开始输出
list1=['zhangsan','lisi','wanger','zhaoliu','maba']
res=list1[::-1]
print(res)#['maba', 'zhaoliu', 'wanger', 'lisi', 'zhangsan']
- 下标切片法对列表数据进行更新
直接对切片赋值就行
list1=['zhangsan','lisi','wanger','zhaoliu','maba']
list1[2:4]='sunjiu'#如果是字符串会拆分装进去
print(list1)#['zhangsan', 'lisi', 's', 'u', 'n', 'j', 'i', 'u', 'maba']
- 切片删除法
del list[n1:n2]
list1=['zhangsan','lisi','wanger','zhaoliu','maba']
del list1[1:3]#删除的范围
print(list1)#['zhangsan', 'zhaoliu', 'maba']
4、列表中的相关函数
- len():检测列表长度
- count(指定元素值):检测列表中指定元素出现的次数
list=['zhangsan','lisi','wanger','zhaoliu','maba','maba']
res=list.count('maba')
print(res)#2
- append(指定元素):添加元素到列表尾部,更改原列表
- insert(index,内容):从索引位置向列表插入内容
list=['zhangsan','lisi','wanger','zhaoliu','maba','maba']
list.insert(2,'mahonggui')
print(list)#['zhangsan', 'lisi', 'mahonggui', 'wanger', 'zhaoliu', 'maba', 'maba']
- pop(索引下标)删除指定索引的元素,出栈
- remove(指定元素内容)删除指定元素
list=['zhangsan','lisi','wanger','zhaoliu','maba','maba']
list.remove('wanger')
print(list)#['zhangsan', 'lisi', 'zhaoliu', 'maba', 'maba']
- index(指定内容):查找指定内容在列表中的位置
- extend(另一个列表):向另一个列表添加多个元素
list=['zhangsan','lisi','wanger','zhaoliu','maba','maba']
list.extend(['caoxueqin','luyou'])
print(list)#['zhangsan', 'lisi', 'wanger', 'zhaoliu', 'maba', 'maba', 'caoxueqin', 'luyou']
- clear():清空所有元素
list=['zhangsan','lisi','wanger','zhaoliu','maba','maba']
list.clear()
print(list)#[]
- reverse()反转元素
- sort()列表排序操作
- 或sort(reverse-True)降序排列
- 或sort(key=自定义函数)使用自定义函数排序规则排序
list=['zhangsan','lisi','wanger','zhaoliu','maba','maba']
list.sort()
print(list)#['lisi', 'maba', 'maba', 'wanger', 'zhangsan', 'zhaoliu']
- copy()复制当前列表,拷贝一维数组时是深拷贝,二维列表时是浅拷贝,值复制,不指向同一个对象
copy()对一维列表最匹配,当是二维列表的时候,二维列表部分是引用,不是值拷贝
list=['zhangsan','lisi','wanger','zhaoliu','maba','maba']
list2=list.copy()
del list[2]
print(list)#['zhangsan', 'lisi', 'zhaoliu', 'maba', 'maba']
print(list2)#['zhangsan', 'lisi', 'wanger', 'zhaoliu', 'maba', 'maba']
5、浅拷贝,深拷贝
copy()是深拷贝(拷贝值,但如果涉及二维列表,则是浅拷贝,如果要进行深拷贝,则要使用copy模块的deepcopy()函数
list=['zhangsan','lisi','wanger',['zhaoliu','maba','wangjiu']]
import copy
newlist=copy.deepcopy(list)#copy模块
del list[3][1]
print(list)#['zhangsan', 'lisi', 'wanger', ['zhaoliu', 'wangjiu']]
print(newlist)#['zhangsan', 'lisi', 'wanger', ['zhaoliu', 'maba', 'wangjiu']]
6、列表推导式(list-comprehension)
使用一个运算对某个序列或可迭代对象的每个元素,来创建列表,或者通过满足某些特定条件来创建子序列。
实际就是用表达式对数据进行过滤或处理,并将结果组成一个新的列表
传统方法
varlist=[]
for item in range(1,5):
varlist.append(item**2)
print(varlist)#[1, 4, 9, 16]
使用map函数和lambda完成
varlist=map(lambda x:x**2,range(1,5))
print(list(varlist))#[1, 4, 9, 16]
使用列表推导式完成
变量=[ 变量表达式运算 for 变量 in 容器(迭代器)]
varlist=[item**2 for item in range(1,5)]#先循环出迭代器的每个元素,然后再进行处理,再赋值给列表
print(list(varlist))#[1, 4, 9, 16]
7、带有判断条件的列表推导式
变量=[ 变量表达式运算 for 变量 in 容器(迭代器 ) 条件表达式]
varlist=[item**2 for item in range(1,7) if item %2==0]#从范围内取偶数乘方
print(list(varlist))#[4, 16, 36]
8、带有判断条件的多循环列表推导式
传统方法
varlist=[]
for x in range(3):
for y in range(1,4):
if(x!=y):
varlist.append((x,y))
print(varlist)#[(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 1), (2, 3)]
列表推导式方法
newlist=[(x,y) for x in range(3) for y in range(1,4) if x!=y]
print(newlist)#[(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 1), (2, 3)]