一、序列结构介绍
Python中的序列类型有很多种:
字符串、列表、元组、字典
二、列表
列表是对传统数值的一种使用包装,但是与传统数组使用最大的不同在于,Python中的列表的内容是允许进行动态修改的
在Python中进行列表的定义直接使用 中括号([]) 就可以了
- 定义列表
列表可以通过索引进行访问,而索引的下标是从0开始的,结束是列表的长度 - 1
# coding=UTF-8
infos = ['zhangsan','lisi','wangwu']
#列表可以通过索引的形式进行访问
print(infos[0],end='、')
print(infos[1],end='、')
print(infos[2])
执行结果:
注意1:空列表不等同于None
# coding=UTF-8
list_a = []
list_b = None
print('第一个列表的地址:%d,对应的数据类型:%s' % (id(list_a),type(list_a)))
print('第二个数据的地址:%d,对应的数据类型:%s' % (id(list_b),type(list_b)))
执行结果:
注意2:索引的范围不能超出列表的可用范围,否则会出现索引错误(下标越界)
注意3:Python中的列表可以进行反向的索引访问
# coding=UTF-8
list_a = ['zhangsan','lisi','wangwu']
#反向索引访问
print(list_a[-1],end='、')
print(list_a[-2],end='、')
print(list_a[-3])
执行结果:
注意4:Python中的列表中大部分的情况下都会使用相同的数据类型,但是在列表里面却可以保存不同的数据类型
# coding=UTF-8
list_a = ['zhangsan',True,100]
#反向索引访问
print(list_a[-1],end='、')
print(list_a[-2],end='、')
print(list_a[-3])
执行结果:
- 使用for循环迭代
# coding=UTF-8
list_a = ['zhangsan','lisi','wangwu']
print('姓名:',end='')
for item in list_a:
print(item,end='、')
执行结果:
# coding=UTF-8
list_a = ['zhangsan','lisi','wangwu']
for index in range(len(list_a)):
print(list_a[index],end='、')
执行结果:
- 依据索引修改数据内容
# coding=UTF-8
infos = ['zhangsan','lisi','wangwu']
for item in infos:
print(item,end='、')
print()
infos[1] = 'sunliu'
for item in infos:
print(item,end='、')
执行结果:
- 列表的加法及乘法运算
# coding=UTF-8
infos1 = ['zhangsan','lisi','wangwu'] * 3
for item in infos1:
print(item,end='、')
print()
infos2 = ['zhangsan','lisi','wangwu'] + ['sunliu','zhaoqi']
for item in infos2:
print(item,end='、')
执行结果:
三、数据分片
列表中存在很多的内容,如果我们需要只对其中的一部分内容进行操作,那么就需要进行分片处理
Python中的分片操作
列表对象(变量) [开始索引:结束索引:步长]
- 数据分片实例
# coding=UTF-8
infos = ['zhangsan','lisi','wangwu','sunliu','zhaoqi','xiaoming']
#截取3~6的数据
print('截取的第一段数据内容:%s' % infos[3:6])
#截取2到最后的数据
print('截取的第二段数据的内容:%s' % infos[2:])
#截取从开始到5的数据
print('截取的第三段数据的内容:%s' % infos[:5])
#截取从2到6的数据步长为2
print('截取的第四段数据内容:%s' % infos[2:6:2])
执行结果:
- 通过分片替换数据
# coding=UTF-8
infos = ['zhangsan','lisi','wangwu','sunliu','zhaoqi','xiaoming']
#以列表形式进行数据替换
infos[2:4] = ['你好啊']
#输出替换的信息
print('替换后的信息:%s' % infos)
#以字符串进行数据替换
infos[2:4] = '我很好啊'
#输出替换信息
print('替换后的内容:%s' % infos)
执行结果:
注意:如果使用的是以列表形式进行替换会显示一个整体
如果是字符串进行替换,就会将字符串进行分片添加
如果进行有步长操作的替换,就要有相同个数的数据
可以进行空列表的替换
# coding=UTF-8
infos = ['zhangsan','lisi','wangwu','sunliu','zhaoqi','xiaoming']
#进行空的替换相当于删除
infos[2:4] = []
print('替换后的结果:%s' % infos)
#步长的替换
infos[0:3:2] = ['1','2']
print('替换后的内容:%s' % infos)
执行结果:
四、成员运算符
如果我们要判断某一个数据是否存在列表中,这个时候传统的做法就是进行迭代操作(Python中最愚蠢的做法)
# coding=UTF-8
infos = ['zhangsan','lisi','wangwu','sunliu','zhaoqi','xiaoming']
name = 'sunliu'
flag = False
for item in infos:
if name == item:
flag = True
if flag:
print('数据查找到了')
执行结果:
- Python中的专门的运算符
in()、not in()
# coding=UTF-8
infos = ['zhangsan','lisi','wangwu','sunliu','zhaoqi','xiaoming']
name = 'sunliu'
if name in infos:
print('数据可以查找到!')
else:
print('没有匹配结果!')
执行结果:
五、列表的操作函数
- 容量的修改 :append()、insert()、remove()、pop()、extend()、del
# coding=UTF-8
infos = []
print('初始化的列表长度:%d' % len(infos))
infos.append('张三')
infos.insert(0,'李四')
print('追加后的列表长度:%d,列表的内容:%s' % (len(infos),infos))
执行结果:
append()函数是在列表的最后进行数据的追加的,而insert()是在指定的索引位置上进行添加的,添加后其它数据向后移动
# coding=UTF-8
infos = []
print('初始化的列表长度:%d,地址:%d' % (len(infos),id(infos)))
infos.append('张三')
infos.insert(0,'李四')
print('追加后的列表长度:%d,列表的内容:%s,列表的地址:%d' % (len(infos),infos,id(infos)))
infos.extend(['王五','孙六'])
print('再次追加后的列表长度:%d,列表的内容:%s,列表的地址:%d' % (len(infos),infos,id(infos)))
执行结果:
在列表扩充的操作里边确实是在一个内存空间中来完成的
列表的copy()操作
# coding=UTF-8
infos = ['zhangsan','lisi','wangwu']
msg = infos.copy()
print('infos列表的地址:%d,列表的内容:%s' % (id(infos),infos))
print('msg列表的地址:%d,列表的内容:%s' % (id(msg),msg))
执行结果:
列表的删除操作
remove()函数是根据内容进行删除的
# coding=UTF-8
infos = ['zhangsan','lisi','wangwu']
print('数据删除之前的内容:%s' % infos)
if 'lisi' in infos:
infos.remove('lisi')
print('数据删除后的内容:%s' % infos)
执行结果:
del可以根据索引来删除数据
# coding=UTF-8
infos = ['zhangsan','lisi','wangwu']
print('数据删除之前的内容:%s' % infos)
del infos[2]
print('数据删除后的内容:%s' % infos)
执行结果:
根据索引删除数据pop()函数
# coding=UTF-8
infos = ['zhangsan','lisi','wangwu']
print('数据删除之前的内容:%s' % infos)
infos.pop(2)
print('数据删除后的内容:%s' % infos)
执行结果:
- 数据处理函数:reverse()、sort()