学习目标:
--常用的数据结构及对应方法
--三种控制流的使用
--字符串的常用处理方法
--正则表达式的使用
--自定义函数的编写
#开启Python学习之路
print ("Hello, Python!")
Hello World!
#print括号里面使用单引号或者双引号都可以
print("Hello Python world!")
print('Hello Python world!')
Hello Python world!
Hello Python world!
#需要打印出双引号
print('"Hello Python world!"')
#需要打印出单引号
print("'Hello Python world!'")
"Hello Python world!"
'Hello Python world!'
1、数据结构及方法
列表、元组、字典都是存储数据的容器
列表
列表用[ ]构造
列表可存放数值、字符串和其他数据结构内容
列表是一种序列,每个列表元素按顺序存入,且有自己的位置
列表是一种可变类型的数据结构,可增、删、改
1.1列表元素的获取
通过索引方式获取列表元素,位置索引从0开始
1.1.1 正向单索引
list1 = ['张三','男',30,'广东','本科','已婚',['身高178','体重70']]
#取出第一个元素
print(list1[0])
#取出第四个元素
print(list1[3])
#取出最后一个元素
print(list1[6])
#取出“体重72”这个值
print(list1[6][1])
张三
广东
['身高178', '体重70']
体重70
1.1.2 负向单索引
从右到左,获取一个元素,即list[-n]
# 取出最后一个元素
print(list1[-1])
# 取出“身高178”这个值
print(list1[-1][0])
# 取出倒数第三个元素
print(list1[-3])
['身高178', '体重70']
身高178
本科
1.1.3 切片索引
按照固定步长,连续取出多个元素,即[stat:end:step],step默认为1
注意:end位置的元素取不到,左闭右开
list2 = ['江苏','安徽','浙江','上海','山东','山西','湖南','湖北']
# 取出“浙江”至“山西”四个元素
print(list2[2:6])
# 取出“安徽”、“上海”、“山西”三个元素
print(list2[1:6:2])
# 取出最后三个元素
print(list2[5:8])
# 取出倒数两个元素
print(list2[-3:-1])
['浙江', '上海', '山东', '山西']
['安徽', '上海', '山西']
['山西','湖南','湖北']
['山西', '湖南']
1.1.4 无限索引
不限制起始或者终止或者两个位置都不限定,用[::step]表示
# 取出头三个元素
print(list2[:3])
# 取出最后三个元素
print(list2[-3:])
# 取出所有元素
print(list2[::])
# 取出奇数位置的元素
print(list2[::2])
['江苏', '安徽', '浙江']
['山西', '湖南', '湖北']
['江苏', '安徽', '浙江', '上海', '山东', '山西', '湖南', '湖北']
['江苏', '浙江', '山东', '湖南']
1.2 列表的方法
1.2.1 列表元素的增加
append:是列表特有的方法,往列表尾部增加元素,每次只能增加一个元素
extend:往列表尾部增加多个元素,需要以列表的的方式传递
insert:在列表的指定位置插入元素,需要传递索引和新元素,索引指的是插入的位置
第一种--append方法
list3 = [1,10,100,1000,10000]
# 在列表末尾添加数字2
list3.append(2)
print(list3)
[1, 10, 100, 1000, 10000, 2]
第二种--extend方法
# 在列表末尾添加20,200,2000,20000四个值
list3.extend([20,200,2000,20000])
print(list3)
[1, 10, 100, 1000, 10000, 2, 20, 200, 2000, 20000]
第三种--insert方法
# 在数字10后面增加11这个数字
list3.insert(2,11)
print(list3)
# 在10000后面插入['a','b','c']
list3.insert(6,['a','b','c'])
print(list3)
[1, 10, 11, 100, 1000, 10000, 2, 20, 200, 2000, 20000]
[1, 10, 11, 100, 1000, 10000, ['a', 'b', 'c'], 2, 20, 200, 2000, 20000]
1.2.2 列表元素的删除
pop:默认删除末尾的最后一个元素,如需删除指定某个元素,需传递索引
remove:删除首次出现的指定值
clear:清空,全部删除
第一种--pop删除方法
# 删除list3中20000这个元素
list3.pop()
print(list3)
# 删除list3中11这个元素
list3.pop(2)
print(list3)
[1, 10, 11, 100, 1000, 10000, ['a', 'b', 'c'], 2, 20, 200, 2000]
[1, 10, 100, 1000, 10000, ['a', 'b', 'c'], 2, 20, 200, 2000]
第二种--remove删除方法
# 删除list3中所有元素
list3.clear()
print(list3)
[1, 10, 100, 1000, 10000, 2, 20, 200, 2000]
第三种--clear删除方法
# 删除list3中所有元素
list3.clear()
print(list3)
[]
1.2.3 列表元素的修改
通过索引获取错误元素,然后用新值取而代之
list4 = ['洗衣机','冰响','电视机','电脑','空调']
# 将“冰响”修改为“冰箱”
print(list4[1])
list4[1] = '冰箱'
print(list4)
冰响
['洗衣机', '冰箱', '电视机', '电脑', '空调']
1.2.4 列表元素的其他方法
计数count、查询位置index、逆转reverse、排序sort(只能对同质数据进行排序)
list5 = [7,3,9,11,4,6,10,3,7,4,4,3,6,3]
# 计算列表中元素3的个数
print(list5.count(3))
# 找出元素6所在的位置
print(list5.index(6))
# 列表元素的颠倒
list5.reverse()
print(list5)
# 列表元素的降序
list5.sort(reverse=True)
元组
元组用( )构造
元组可存放数值、字符串和其他数据结构内容
元组是一种序列,每个列表元素按顺序存入,且有自己的位置
元组不是一种可变类型的数据结构,存储数据的不可变容器,不可增、删、改
元组的方法
计数count、查询位置index
t = ('a','d','z','a','d','c','a')
# 计数
print(t.count('a'))
# 元素位置
print(t.index('c'))
3
5
字典
字典是常用的数据结构,与json格式相似,用{ }表示
字典是以键值对的形式存储数据,即key:value
字典不是序列,无法通过位置索引获取,只能通过键索引实现
字典与列表一样,是一种可变类型的数据结构,存储数据的可变容器,不可增、删、改
注意:键在字典种是唯一的,不能重复,否则无法取数,字符型的键要用引号,值可以是单个值,也可以是列表、元组或字典
3.1 字典数据的获取
dict1 = {'姓名':'张三','年龄':33,'性别':'男','子女':{'儿子':'张四','女儿':'张美'},'兴趣':['踢球','游泳','唱歌']}
# 打印字典
print(dict1)
# 取出年龄
print(dict1['年龄'])
# 取出子女中的儿子姓名
print(dict1['子女']['儿子'])
# 取出兴趣中的游泳
print(dict1['兴趣'][1])
{'姓名': '张三', '年龄': 33, '性别': '男', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌']}
33
张四
游泳
3.2 字典元素的增加
setdefault:该方法接受两个参数,用( )和逗号表示
update:该方法接受的是一个字典对象,用{ }和冒号表示
键索引方法:具体索引的赋值
# 往字典dict1中增加户籍信息
dict1.setdefault('户籍','合肥')
print(dict1)
# 增加学历信息
dict1.update({'学历':'硕士'})
print(dict1)
# 增加身高信息
dict1['身高'] = 178
print(dict1)
{'姓名': '张三', '年龄': 33, '性别': '男', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌'], '户籍': '合肥'}
{'姓名': '张三', '年龄': 33, '性别': '男', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌'], '户籍': '合肥', '学历': '硕士'}
{'姓名': '张三', '年龄': 33, '性别': '男', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌'], '户籍': '合肥', '学历': '硕士', '身高': 178}
3.3 字典元素的删除
pop:在列表种默认删除末尾的最后一个元素,但在字典种必须指定某个元素,需传递索引
popitem:删除字典中的任意一个元素
clear:清空,全部删除
# 删除字典中的户籍信息
dict1.pop('户籍')
print(dict1)
# 删除字典中女儿的姓名
dict1['子女'].pop('女儿')
print(dict1)
# 删除字典中的任意一个元素
dict1.popitem()
print(dict1)
# 清空字典元素
dict1.clear()
print(dict1)
{'姓名': '张三', '年龄': 33, '性别': '男', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌'], '学历': '硕士', '身高': 178}
{'姓名': '张三', '年龄': 33, '性别': '男', '子女': {'儿子': '张四'}, '兴趣': ['踢球', '游泳', '唱歌'], '学历': '硕士', '身高': 178}
{'姓名': '张三', '年龄': 33, '性别': '男', '子女': {'儿子': '张四'}, '兴趣': ['踢球', '游泳', '唱歌'], '学历': '硕士'}
{}
3.4 字典元素的修改
update:该方法接受的是一个字典对象,用{ }和冒号表示
键索引方法:具体索引的赋值
dict1 = {'姓名':'张三','年龄':33,'性别':'男','子女':{'儿子':'张四','女儿':'张美'},'兴趣':['踢球','游泳','唱歌']}
# 将性别改为女
dict1.update({'性别':'女'})
print(dict1)
# 将年龄改为35
dict1['年龄'] = 35
print(dict1)
# 将兴趣中的唱歌改为跳舞
dict1['兴趣'][2] ='跳舞'
print(dict1)
{'姓名': '张三', '年龄': 33, '性别': '女', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌']}
{'姓名': '张三', '年龄': 35, '性别': '女', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '唱歌']}
{'姓名': '张三', '年龄': 35, '性别': '女', '子女': {'儿子': '张四', '女儿': '张美'}, '兴趣': ['踢球', '游泳', '跳舞']}
3.5 字典的其他方法
用get方法取出对应键的值,没有该键则不报错
用keys方法取出所有键的值
用values方法取出所有值
用items方法取出所有键值对
dict2 = {'电影':['三傻大闹宝莱坞','大话西游之大圣娶亲','疯狂动物城'], '导演':['拉吉库马尔·希拉尼','刘镇伟','拜伦·霍华德 '], '评分':[9.1,9.2,9.2]}
# 取出键'评分'所对应的值
print(dict2.get('评分'))
# 取出字典中的所有键
print(dict2.keys())
# 取出字典中的所有值
print(dict2.values())
# 取出字典中的所有键值对
print(dict2.items())
[9.1, 9.2, 9.2]
dict_keys(['电影', '导演', '评分'])
dict_values([['三傻大闹宝莱坞', '大话西游之大圣娶亲', '疯狂动物城'], ['拉吉库马尔·希拉尼', '刘镇伟', '拜伦·霍华德 '], [9.1, 9.2, 9.2]])
dict_items([('电影', ['三傻大闹宝莱坞', '大话西游之大圣娶亲', '疯狂动物城']), ('导演', ['拉吉库马尔·希拉尼', '刘镇伟', '拜伦·霍华德 ']), ('评分', [9.1, 9.2, 9.2])])