Python中列表(list)的详细使用
文章目录
前言
列表是Python中常见的数据结构,处处都有它的身影。列表中的数据项可以是不同的数据类型,如整型、字符、字典、列表等。这也是它的特点。我们可以对列表进行添加、删除、修改、排序等操作。
一、列表的创建
1.使用中括号[]
每个元素使用逗号间隔,可嵌套创建。
l1 = []#创建空列表l1
print(type(l1))
print(l1)
l2 = [1,'dormitory',[{12,456},'忙']]#不同元素类型组成的列表
print(l2)
运行结果如下:
2.使用list()函数
l1 = list('I love Python')#字符串为可迭代类型
print(l1)
l2 = list([1,'dormitory',[{12,456},'忙']])#列表为可迭代类型
print(l2)
运行结果如下:
二、列表元素的访问
1.使用索引
l1 = [1,'dormitory',[{12,456},'忙']]
print(l1[2])#访问索引为2的元素,正数下标从0开始
print(l1[-2])#访问索引为-2的元素,负数下标从-1开始
print(l1[2][1])#访问二维列表中的元素
运行结果如下:
2.使用切片
l1 = ['I','l','o','v','e','p','y','t','h','o','n']
print(l1[3:])#访问索引为3到末尾的元素
print(l1[2:6:2])#访问2~5,步长为2的元素,左闭右开
运行结果如下:
三、列表的遍历
1.使用in操作符
l1 = ['I','love','python']
for i in l1:
print(i,end=' ')
运行结果如下:
2.使用range()函数
l1 = ['I','love','python']
length = len(l1)#求列表l1的长度
for i in range(length):
print(l1[i],end=' ')
运行结果如下:
3.使用iter()函数
l1 = ['I','love','python']
for i in iter(l1):
print(i,end=' ')
运行结果如下:
4.使用enumerate()函数
遍历列表元素及其下标。
l1 = ['I','love','python']
for i in enumerate(l1):
print(i,end=' ')
运行结果如下:
四、列表的排序
1.sort()方法
语法格式:
sort(key=none,reverse=False)
覆盖
。举例:
l1 = [5,6,2,8,1,3,4,9,7]
l1.sort()#默认升序排序
print(l1)
l1.sort(reverse=True)#降序排序
print(l1)
运行结果如下:
2.sorted()方法
将列表元素按要求排列,不覆盖
原列表。
l1 = [5,6,2,8,1,3,4,9,7]
l2 = sorted(l1)
l3 = sorted(l1, reverse=True)
print(l1)#原列表未被覆盖
print(l2)#升序排列的列表
print(l3)#降序排列的列表
运行结果如下:
3.reverse()方法
将列表元素降序排列,覆盖
原列表。
l1 = [5,6,2,8,1,3,4,9,7]
l1.reverse()
print(l1)#原列表被覆盖
运行结果如下:
五、列表的其他操作
1.元素的添加
(1) append()方法
用于在列表末尾
添加新的元素。
语法格式:
list.append(obj)
举例:
l1 = [5,'abs','sqrt']
l1.append('function')#添加元素'function'
print(l1)
运行结果如下:
(2) extend()方法
用于在列表末尾一次性
添加另一个列表中的所有元素。
语法格式:
list.exend(seq)
seq表示列表,可以是字典、元组、集合、字典,若为字典,则仅会将键作为元素依次添加到原列表的末尾
举例:
l1 = [5,'abs','sqrt']
l1.extend(['function','method','approach'])
print(l1)
运行结果如下:
(3) insert()方法
用于将元素插入列表的指定位置
。
语法格式:
list.insert(index,obj)
index表示对象obj需要插入的索引位置,obj表示要插入列表的对象。
若指定的位置不存在,则插入到列表末尾。
举例:
l1 = ['chinese','english','physics']
l1.insert(1,'math')#在索引为1的位置插入
print(l1)
l1.insert(6,'chemistry')#该索引不存在,即越界,在末尾插入
print(l1)
运行结果如下:
2.元素的删除
(1) del语句
删除列表中指定位置
的元素。
l1 = ['chinese','english','physics']
del l1[1]
print(l1)
运行结果如下:
(2) remove()方法
用于移除列表中的某个元素。
语法格式:
list.remove(obj)
obj表示要移除的对象,若列表中有多个匹配的元素,只会移除匹配到的第一个
元素。
举例:
l1 = ['chinese','english','physics','english']
l1.remove('english')#移除首个匹配的元素
print(l1)
运行结果如下:
(3) pop()方法
用于移除列表中的某个元素。
语法格式:
list.pop([index=-1])
index是可选参数,为要移除列表元素的索引值
,默认index=-1,删除最后一个
列表值。
举例:
l1 = ['chinese','english','physics','english']
l1.pop(1)#移除列表索引值为1的元素
print(l1)
l1.pop()#移除最后一个元素
print(l1)
运行结果如下:
3.元素的修改
通过索引获取元素并对其重新赋值。
l1 = ['chinese','english','physics','english']
l1[1]='math'
print(l1)
运行结果如下:
4.计元素数
l1 = ['chinese','english','physics','english']
print("english的个数为:",l1.count('english'))
运行结果如下:
5.元素索引的查找
查找元素出现的第一个索引
。
l1 = ['chinese','english','physics','english']
print("english的索引为:",l1.index('english'))
运行结果如下:
6.列表的清空
l1 = ['chinese','english','physics','english']
l1.clear()
print(l1)
运行结果如下:
7.列表的复制
l1 = ['chinese','english','physics']
l2 = l1.copy()#不等同于=,l1和l2的地址不一样,内容一样
print(id(l1),id(l2))
print(l1,l2,end='\n\n')
a = [1,2]
b = a#用=赋值
c = []
c = a#创建列表c,再用=赋值
d = a[:]#将a切片访问赋值给d
print(a,b,c,d)#输出a,b,c,d,都一样
print(id(a),id(b),id(c),id(d))#输出a,b,c,d的地址,a,b,c指向一个地址,d分配了新地址
b[1]='b'
print(a,b,c,d)#更改列表b索引为1的元素,指向同一地址的a,b,c一起更改
运行结果如下:
8.列表脚本操作符
print(['apple','banana']+['strawberry','cherry'])#列表连接
print(['apple','banana']*3)#列表重复
print('cherry' in ['apple','banana'])#判断是否在列表中
print('cherry' not in ['apple','banana'])#判断是否在列表外
print(len(['apple','banana',1]))#列表长度
运行结果如下:
9.列表推导式
列表推导式又叫列表解析式,可以更加简便地创建列表。
语法格式:
variable = [expr for value in collection]
或
variable = [expr for value in collection if condition]
变量 表达式 收集器 条件
举例:
l1 = [i*3 for i in range(15) if i%2==0]#对0到14之间的偶数乘3操作
print(l1)
l2 = [[col for col in range(5)] for row in range(6)]#创建6行5列的嵌套列表
print(l2)
l2[1].append(5)#在二维列表的索引为1的行加入一个元素5
print(l2)
l3 = [x+y for x in 'abc' for y in 'ABC']#创建双层循环列表
print(l3)
运行结果如下:
作者:忙_