Python基础学习05--列表
列表
列表就有顺序的数据的组合
说到顺序,就能想到字符串中提到的序列(suqence);列表同样有序列,而且他的序列与字符串一致!如下图
创建列表
# 1、创建一个空列表 list1 = [] # # type是内置函数,查看数据的类型 print('list1的数据类型为:',type(list1)) print('list1 = ',list1) # 创建存在数据的列表 list2 = [33] print('list2的数据类型为:',type(list2)) print('list2 = ',list2) # 创建存在多数据的列表 list3 = [3,1,5,7,9] print('list3的数据类型为:',type(list3)) print('list3 = ',list3)
输出的结果如下:
list1的数据类型为: <class 'list'> list1 = []
list2的数据类型为: <class 'list'> list2 = [33]
list3的数据类型为: <class 'list'> list3 = [3, 1, 5, 7, 9]
列表中的数据可包含python中所有的数据类型
l1 = '我是变量' list4 = [1,1.1,l1,'字符串',True,1+1,[4/2,3],] print('list4的数据类型为:',type(list4)) print('list4 = ',list4)
输出结果如下:
list4的数据类型为: <class 'list'> list4 = [1, 1.1, '我是变量', '字符串', True, 2, [2.0, 3]]
列表的sequence(序列)操作
上文有提到,列表同字符串一样,是有序列的,存在序列,就支持切片操作!
l1 = '我是变量' list5 = [1,1.1,l1,'字符串',True,1+1,[4/2,3],] print('list5的值:',list5) # 查看列表中某一值 print('list5[4]的值:',list5[4]) # 查看列表中字符串中某一元素 print('list5[3][1]的值:',list5[3][1]) # 查看列表中的列表中某一元素 print('list5[-1][1]的值:',list5[-1][1]) # 切片操作 # 再次强调,切片操作所切内容左含右不含! print('list5[1:4]的值:',list5[1:4])
# 切片操作可以设置步长,且步长默认为1 print('list5[1:4]的值:',list5[1:4:2])
# 下标可以超出列表长度 print('list5[4:11]的值:',list5[4:11]) # 所切的下标值可以为空,即左边下标值默认为0,右边默认值为最大下标+1 print('list5[:]的值:',list5[:]) print('list5[1:]的值:',list5[1:]) print('list5[:4]的值:',list5[:4]) # 切片同样可以对负下标进行操作 print('list5[-5:-1]的值:',list5[-5:-1])
输出结果如下:
[1, 1.1, '我是变量', '字符串', True, 2, [2.0, 3]] list5[4]的值: True list5[3][1]的值: 符 list5[-1][1]的值: 3 list5[1:4]的值: [1.1, '我是变量', '字符串'] list5[1:4:1]的值: [1.1, '字符串'] list5[4:11]的值: [True, 2, [2.0, 3]] list5[:]的值: [1, 1.1, '我是变量', '字符串', True, 2, [2.0, 3]] list5[1:]的值: [1.1, '我是变量', '字符串', True, 2, [2.0, 3]] list5[:4]的值: [1, 1.1, '我是变量', '字符串'] list5[-5:-1]的值: ['我是变量', '字符串', True, 2]
切片操作生成的是一个全新的列表
# 这里引用一个内置函数id(),作用是显示出一个变量或者数据的唯一确定编号 # 例如: a = 1 b = '1' print('a的id为:',id(a)) print('b的id为:',id(b)) c = a print('c的id为:',id(c))
输出结果如下:
a的id为: 1467867920 b的id为: 18602144 c的id为: 1467867920
以下对切片操作进行校验,生成的列表是否为新列表
# 通过id可以直接判断出分片是从新生成了一份数据还是使用的同一份数据 list6 = [3,'3',101,5.5] list7 = list6[:] list8 = list7 # 如果两个id值一样,则表明分片产生的列表是使用的同一地址同一份数据 # 否则,则表明切片是从新生成了一份数据,即一个新的列表,然后把数值拷贝到新列表中 print('list6的id为:',id(list6)) print('list7的id为:',id(list7)) print('list8的id为:',id(list8))
输出结果如下:
list6的id为: 47179336 list7的id为: 47179416 list8的id为: 47179416
可以看到list7是由list6切片而来,然而id(list6) != id(list7)
列表的常用方法
1、append()
在列表的尾部增加一个元素
list9 = [1,2,3,4] print('list9-前 :',list9) list9.append(5) print('list9-后 :',list9)
list9-前 : [1, 2, 3, 4]
list9-后 : [1, 2, 3, 4, 5]
2、insert()
在列表的指定位置添加元素
list9 = [1,2,3,4] print('list9-前 :',list9) list9.insert(2,5) # 在列表的下标值为2的位置添加5 print('list9-后 :',list9)
list9-前 : [1, 2, 3, 4]
list9-后 : [1, 2, 5, 3, 4]
3、del
删除列表中指定下标的元素
list9 = [1,2,3,4] print('list9-前 :',list9) del list9[1] # 删除列表下标值为1的元素 print('list9-后 :',list9)
list9-前 : [1, 2, 3, 4]
list9-后 : [1, 3, 4]
4、pop()
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list9 = [1,2,3,4] print('list9-前 :',list9) a = list9.pop() print(' 移除的值 :',a) print('list9-后 :',list9)
list9-前 : [1, 2, 3, 4] 移除的值 : 4 list9-后 : [1, 2, 3]
5、remove()
移除列表中某个值的第一个匹配项
list9 = [1,2,3,4,3] print('list9-前 :',list9) list9.remove(3) # 移除第一个元素为3的值 print('list9-后 :',list9)
list9-前 : [1, 2, 3, 4, 3]
list9-后 : [1, 2, 4, 3]
6、clear()
清空列表
list9 = [1,2,3,4,3] print('list9-前 :',list9) list9.clear() print('list9-后 :',list9)
list9-前 : [1, 2, 3, 4, 3]
list9-后 : []
7、extend()
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。
list9 = [1,2,3,4,3] print('list9-前 :',list9) print('list9-前 :',id(list9)) list10 = [1,1,1,1] print('list10 :',list10) list9.extend(list10) print('list9-后 :',list9) print('list9-后 :',id(list10))
list9-前 : [1, 2, 3, 4, 3] list9-前 : 58006344 list10 : [1, 1, 1, 1] list9-后 : [1, 2, 3, 4, 3, 1, 1, 1, 1] list9-后 : 59155240
8、count()
统计某个元素在列表中出现的次数
list9 = [1,2,3,4,3] print('list9 :',list9) n = list9.count(3) print('3在列表中出现:',n,'次')
list9 : [1, 2, 3, 4, 3]
3在列表中出现: 2 次
9、reverse()
翻转列表内容,原地翻转
list9 = [1,2,3,4,3] print('list9-前 :',list9) list9.reverse() print('list9-后 :',list9)
list9-前 : [1, 2, 3, 4, 3]
list9-后 : [3, 4, 3, 2, 1]
10、sort()
列表正序排列
list9 = [1,2,3,4,3] print('list9-前 :',list9) list9.sort() print('list9-后 :',list9)
list9-前 : [1, 2, 3, 4, 3]
list9-后 : [1, 2, 3, 3, 4]