Python基础及应用课件第4章
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• List可以在原位进行修改,直接用下标访问就可以,比如:
list1 = [1, 2, 3, 4, 5] list1[2] = 99999 print(list1)
• 这段代码[会1,输2,出999:99, 4, 5]
• 这样第三个元素就被修改了。
修改
• 还记得我们刚刚学习的切片操作符吗?对于List来说可以一次修 改一段值li,st1比=如[1:, 2, 3, 4, 5]
• 同样地,这里也可以使用负下标。
切片:以固定间隔取连续的元素
• 上述取t连upl续e1元= 素(1,的3,操5作, 7其, 9实) 还可以进一步丰富,例如:
print(tuple1[1:4:2])
• 这段代码会输出: (3, 7) • 这里表示的含义就是从第2个元素取到第5个元素,每2个取第一个
• 这段代码会输出: (1, 3, 5) • 我们会发现结果仍然是一个 Tuple,由第1个到第4个元素之间的
元素构成,其中包含第1个元素,但是不包含第4个元素。 • 这种切片操作接收两个参数,开始下标和结束下标,中间用分号
隔开,也就是上面例子中的0和3,但是要注意的是元素下标区间 是左闭右开的。如果对之前讲循环时候的 range 还有印象的话, 可以发现它们区间都是左闭右开的,这是Python中的一个规律。
7/Slice.py", line 6, in <module> print(tuple1[5])
IndexError: tuple index out of range
• 这个异常的详细信息是下标超出了范围。如果遇到这种情况,我
切片:取连续的元素
tuple1 = (1, 3, 5, 7, 9) print(tuple1[0:3])
List
• List又叫li列st表1 =,[1也, 2是, 一3, 个4, 线5]性结构,它的表达形式是:
• List的性质和Tuple是非常类似的,上述Tuple的操作都可以用在 List上,但是List有一个最重要的特点就是元素可以修改,所以 List的功能要比Tuple更加丰富。
• 由于List的查找和遍历语法和Tuple是完全一致的,所以这里就不 再赘述了,我们把主要精力放到List的特性上。
修改
• 我们通过创建tuple3和tuple4,“修改”了tuple1和tuple2。
• 同时要注意的是,之前在讲字符串的时候提到的加法和乘法对 Tuple的操作也是类似的,效果分别是两个Tuple元素合并为一个 新的Tuple和重复自身元素返回一个新的Tuple。
遍历
• 遍历有# f两or种循方环遍法历
• 什么是数据结构 • Tuple(元组) • List(列表) • Dict(字典) • 字符串
目录
什么是数据结构
• 数据结构是指相互之间存在一种或多种特定关系的数据元素的集 合,是计算机存储组织数据的形式。
• 我们可以将生活中的事物联系抽象为特定的四种数据结构——集 合结构,线性结构,树形结构,图状结构。
添加
• 之前已经提到了,List是可以修改的,因此我们可以在尾部添加 一个元l素is,t1 比= [如1,:2, 3, 4, 5]
# 下面是一种标准的错误做法 # list1[5] = 6 # 这样会报 IndexError
# 下面才是正确做法 list1.append(6) print(list1)
切片:取一个元素
• 如果我们pr取int了(t一upl个e1[超5]出) 范围的元素: • • 那么 Python 解释器会抛出一个 IndexError 异常: • Traceback (most recent call last):
Traceback (most recent call last): File "/Users/jiangjiao/PycharmProjects/LearnPythonWithPractice/Chapter
什么是数据结构
1.集合结构
• 在数学中集合的朴素定义是指具有某种特定性质的事物的总体, 具有无序性和确定性。计算机中的集合结构顾名思义正是对生活 中集合关系的抽象,比如对于一筐鸡蛋,筐就是一个集合,其中 的元素就是每个鸡蛋。
什么是数据结构
• 2.线性结构
• 线性结构和集合结构非常类似,但是线性结构是有序的并且元素 之间有联系,比如排队中的人就可以看做一个线性结构,每个人 是一个元素同时每个人记录自己前面和后面的人是谁,这样存储 到计算机中后我们可以从任意一个人访问到另一个人。
• 所以这里会输出tuple1中下标为2的第3个元素:5 • 这是切片操作符最简单的形式,它只接收一个参数就是元素的下
标,
切片:取一个元素
• 特别地,Python支持负数下标表示从结尾倒着取元素,比如我们 如果想取出最后一个元素:
print(tuple1[-1])
• 但是要注意的是负数下标是从-1开始的,所以对于一个含有n个元 素的 Tuple,它的负数下标范围为-1~-n,因此这里得到的是下标 为4的最后1个元素,输出为: 9
删除
• 由于List元素是可以修改的,因此删除也是允许的,List删除元素 有三种方法:
• del 操作符 • pop 方法
remove 方法
删除:源自文库el 操作符
• del 是一个Python内建的一元操作符,只有一个参数是被删除的对 象,比如li:st1 = [1, 2, 3, 4, 5]
del list1[1] print(list1)
print(f'the second element is {tuple1[1]}')
• 这段代码会th输e s出econ:d element is 3
切片
• 1.背景 • 切片操作符的和C/C++的下标运算符非常像,但是在 C/C++ 中,
"[]"只能用来取出指定下标的元素,所以它在 C/C++ 中叫做下标 运算符。 • 在Python中,这个功能被极大地扩展了——它不但能取一个元素 ,还能取一串元素,甚至还能隔着取、倒着取,反向取等等。由 于取一串元素的操作更像是在切片,所以我们称它为切片操作符 。 • 灵活使用切片操作符,往往可以大大简化代码,这也是Python提 供的便利之一。
for item in tuple1: print(f'{item} ', end='')
# while 循环遍历 index = 0 # 下标 while index < len(tuple1):
print(f'{tuple1[index]} ', end='') index += 1
遍历
• 这段代码会输出:1 3 5 7 9 1 3 5 7 9 • 我们在 print 函数中加了一个使结束符为空的参数,这个用法会在
删除:remove 方法
• remove方lis法t1接= 收[1,一2,个1参, 3数, 5,] 为被删除的对象,比如:
list1.remove(1) print(list1)
• 这段代码[2,会1,输3,出5]:
• 同时我们也可以看出remove是从前往后查找,删除遇到第一个相 等的元素。
修改
• 树形结构和图状结构这里暂不介绍,我们的学习会以前两种为主 ,因为它们直接对应了 Python 的基本数据类型。
Tuple
• Tuple又叫元tup组le,= (是1,一2,个3)线性结构,它的表达形式是这样的:
• 即用一个圆括号括起来的一串对象就可以创建一个Tuple,之所以 说它是一个线性结构是因为在元组中元素是有序的,比如我们可 以这样去访tu问ple它1 的= (内1, 容3, 5, 7, 9)
内置函数
• 此外有一pr些int内(le置n(函tup数le1可)) 以作用于Tuple上,比如:
print(max(tuple1)) print(min(tuple1))
• 从上到下分别是求tuple1的长度、tuple1中最大的元素、tuple2中最 小的元素。
• 这些函数对接下来即将讲到的List和Dict也有类似的作用。
切片:取一个元素
• 如果我们有一个 Tuple,并且我们想取出其中一个元素,我们可 以使用具tup有le一1 =个(1参, 3数, 的5, 下7,标9)运算符:
print(tuple1[2]) # 取第三个元素而不是第二个
• 绝大部分编程语言下标都是从0开始的,也就是说在Python中对于 一个有n个元素的Tuple,自然数下标的范围是0~n-1。
。于是我们取出了第2个和第4个元素。这也是切片操作符的完整 形式,即 [开始:结束:间隔],例如上面的 [1:4:2]。 • 特殊地p,rin这t(个tup间le1隔[::可-1]以) 是负数,表示反向间隔,例如
修改
• 这里说“修改”并不是原位的修改,因为Tuple的元素一旦指定就 不可再修tu改ple,1 而= (是1, 通3,过5,创7,建9)一个新的 Tuple 来实现修改。
• 这段代码[1会, 2输, 出3, :4, 5, 6, 8, 9, 10, 11]
[8888, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11]
添加
• extend接收一个参数,内容为要合并进这个list的一个可迭代对象 ,所以这里可以传入一个List或者Tuple。
• insert接收两个参数,分别是下标和被插入的对象,可以在指定下 标位置插入指定对象。
• 这段代码会输出:[1, 3, 4, 5] • del一般用来删除指定位置的元素。
删除:pop 方法
• pop方法没有参数,默认删除最后一个元素,比如: list1 = [1, 2, 3, 4, 5] print(list1.pop()) print(list1)
• 这段代码5会输出:
[1, 2, 3, 4]
下一章函数中讲到,这里只要知道这样会使print不再自动换行就 行了。 • 我们可以通过一个 for 循环或者 while 循环直接顺序访问元组的内 容。显然for循环不仅可读性高而且更加简单,在大多数情况下应 该优先采用for循环。 • 另外值得一提的是,之所以Tuple可以这样用for遍历是因为Tuple 包括后面马上要提到的List和Dict对象本身是一个可迭代的对象, 这个概念之后会细讲,这里只要学会for循环的用法就行了。
查找
• 在 Tuple.中if 查3 i找n 元tup素le1可: 以用 in,比如:
print('We found 3!') else:
print('No 3!')
• 这段代码会输出: We found 3! • in 是一个使用广泛的判断包含的运算符,类似地还有 not in。in的
作用就是判断特定元素是否在某个对象中,如果包含就返回 True ,否则返回 False。
添加
• 输出: [1, 2, 3, 4, 5, 6] • append方法的作用是在List后面追加一个元素,类似地,我们还有
extend 和liisnts2er=t可[8以, 9用, 1于0,添11加] 元素,比如:
list1.extend(list2) print(list1) list1.insert(0, 8888) print(list1)
tuple2 = (2, 4, 6, 8)
tuple3 = tuple1 + tuple2
print(tuple3)
tuple4 = tuple1 * 2
print(tuple4)
•
这段代码会输出: (1, 3, 5, 7, 9, 2, 4, 6, 8)
(1, 3, 5, 7, 9, 1, 3, 5, 7, 9)
切片:取连续的元素
• 特殊地,如果我们从第0个开始取,或者我们要一直取到最后一个 ,我们可pri以nt省(tu略pl相e1[应:3]的) 参数,比如:
print(tuple1[3:])
• 第一句表示从第1个元素取到第3个元素,第二句表示从第4个元素 取到最后一个,所以输出为:
(1, 3, 5) (7, 9)
list1[2:4] = [111, 222] print(list1)
• 这段代码[1会, 2输, 1出11,:222, 5]
修改
• 也可以等间隔赋值:
list1 = [1, 2, 3, 4, 5] list1[::2] = [111, 222, 333] print(list1)
list1 = [1, 2, 3, 4, 5] list1[2] = 99999 print(list1)
• 这段代码[会1,输2,出999:99, 4, 5]
• 这样第三个元素就被修改了。
修改
• 还记得我们刚刚学习的切片操作符吗?对于List来说可以一次修 改一段值li,st1比=如[1:, 2, 3, 4, 5]
• 同样地,这里也可以使用负下标。
切片:以固定间隔取连续的元素
• 上述取t连upl续e1元= 素(1,的3,操5作, 7其, 9实) 还可以进一步丰富,例如:
print(tuple1[1:4:2])
• 这段代码会输出: (3, 7) • 这里表示的含义就是从第2个元素取到第5个元素,每2个取第一个
• 这段代码会输出: (1, 3, 5) • 我们会发现结果仍然是一个 Tuple,由第1个到第4个元素之间的
元素构成,其中包含第1个元素,但是不包含第4个元素。 • 这种切片操作接收两个参数,开始下标和结束下标,中间用分号
隔开,也就是上面例子中的0和3,但是要注意的是元素下标区间 是左闭右开的。如果对之前讲循环时候的 range 还有印象的话, 可以发现它们区间都是左闭右开的,这是Python中的一个规律。
7/Slice.py", line 6, in <module> print(tuple1[5])
IndexError: tuple index out of range
• 这个异常的详细信息是下标超出了范围。如果遇到这种情况,我
切片:取连续的元素
tuple1 = (1, 3, 5, 7, 9) print(tuple1[0:3])
List
• List又叫li列st表1 =,[1也, 2是, 一3, 个4, 线5]性结构,它的表达形式是:
• List的性质和Tuple是非常类似的,上述Tuple的操作都可以用在 List上,但是List有一个最重要的特点就是元素可以修改,所以 List的功能要比Tuple更加丰富。
• 由于List的查找和遍历语法和Tuple是完全一致的,所以这里就不 再赘述了,我们把主要精力放到List的特性上。
修改
• 我们通过创建tuple3和tuple4,“修改”了tuple1和tuple2。
• 同时要注意的是,之前在讲字符串的时候提到的加法和乘法对 Tuple的操作也是类似的,效果分别是两个Tuple元素合并为一个 新的Tuple和重复自身元素返回一个新的Tuple。
遍历
• 遍历有# f两or种循方环遍法历
• 什么是数据结构 • Tuple(元组) • List(列表) • Dict(字典) • 字符串
目录
什么是数据结构
• 数据结构是指相互之间存在一种或多种特定关系的数据元素的集 合,是计算机存储组织数据的形式。
• 我们可以将生活中的事物联系抽象为特定的四种数据结构——集 合结构,线性结构,树形结构,图状结构。
添加
• 之前已经提到了,List是可以修改的,因此我们可以在尾部添加 一个元l素is,t1 比= [如1,:2, 3, 4, 5]
# 下面是一种标准的错误做法 # list1[5] = 6 # 这样会报 IndexError
# 下面才是正确做法 list1.append(6) print(list1)
切片:取一个元素
• 如果我们pr取int了(t一upl个e1[超5]出) 范围的元素: • • 那么 Python 解释器会抛出一个 IndexError 异常: • Traceback (most recent call last):
Traceback (most recent call last): File "/Users/jiangjiao/PycharmProjects/LearnPythonWithPractice/Chapter
什么是数据结构
1.集合结构
• 在数学中集合的朴素定义是指具有某种特定性质的事物的总体, 具有无序性和确定性。计算机中的集合结构顾名思义正是对生活 中集合关系的抽象,比如对于一筐鸡蛋,筐就是一个集合,其中 的元素就是每个鸡蛋。
什么是数据结构
• 2.线性结构
• 线性结构和集合结构非常类似,但是线性结构是有序的并且元素 之间有联系,比如排队中的人就可以看做一个线性结构,每个人 是一个元素同时每个人记录自己前面和后面的人是谁,这样存储 到计算机中后我们可以从任意一个人访问到另一个人。
• 所以这里会输出tuple1中下标为2的第3个元素:5 • 这是切片操作符最简单的形式,它只接收一个参数就是元素的下
标,
切片:取一个元素
• 特别地,Python支持负数下标表示从结尾倒着取元素,比如我们 如果想取出最后一个元素:
print(tuple1[-1])
• 但是要注意的是负数下标是从-1开始的,所以对于一个含有n个元 素的 Tuple,它的负数下标范围为-1~-n,因此这里得到的是下标 为4的最后1个元素,输出为: 9
删除
• 由于List元素是可以修改的,因此删除也是允许的,List删除元素 有三种方法:
• del 操作符 • pop 方法
remove 方法
删除:源自文库el 操作符
• del 是一个Python内建的一元操作符,只有一个参数是被删除的对 象,比如li:st1 = [1, 2, 3, 4, 5]
del list1[1] print(list1)
print(f'the second element is {tuple1[1]}')
• 这段代码会th输e s出econ:d element is 3
切片
• 1.背景 • 切片操作符的和C/C++的下标运算符非常像,但是在 C/C++ 中,
"[]"只能用来取出指定下标的元素,所以它在 C/C++ 中叫做下标 运算符。 • 在Python中,这个功能被极大地扩展了——它不但能取一个元素 ,还能取一串元素,甚至还能隔着取、倒着取,反向取等等。由 于取一串元素的操作更像是在切片,所以我们称它为切片操作符 。 • 灵活使用切片操作符,往往可以大大简化代码,这也是Python提 供的便利之一。
for item in tuple1: print(f'{item} ', end='')
# while 循环遍历 index = 0 # 下标 while index < len(tuple1):
print(f'{tuple1[index]} ', end='') index += 1
遍历
• 这段代码会输出:1 3 5 7 9 1 3 5 7 9 • 我们在 print 函数中加了一个使结束符为空的参数,这个用法会在
删除:remove 方法
• remove方lis法t1接= 收[1,一2,个1参, 3数, 5,] 为被删除的对象,比如:
list1.remove(1) print(list1)
• 这段代码[2,会1,输3,出5]:
• 同时我们也可以看出remove是从前往后查找,删除遇到第一个相 等的元素。
修改
• 树形结构和图状结构这里暂不介绍,我们的学习会以前两种为主 ,因为它们直接对应了 Python 的基本数据类型。
Tuple
• Tuple又叫元tup组le,= (是1,一2,个3)线性结构,它的表达形式是这样的:
• 即用一个圆括号括起来的一串对象就可以创建一个Tuple,之所以 说它是一个线性结构是因为在元组中元素是有序的,比如我们可 以这样去访tu问ple它1 的= (内1, 容3, 5, 7, 9)
内置函数
• 此外有一pr些int内(le置n(函tup数le1可)) 以作用于Tuple上,比如:
print(max(tuple1)) print(min(tuple1))
• 从上到下分别是求tuple1的长度、tuple1中最大的元素、tuple2中最 小的元素。
• 这些函数对接下来即将讲到的List和Dict也有类似的作用。
切片:取一个元素
• 如果我们有一个 Tuple,并且我们想取出其中一个元素,我们可 以使用具tup有le一1 =个(1参, 3数, 的5, 下7,标9)运算符:
print(tuple1[2]) # 取第三个元素而不是第二个
• 绝大部分编程语言下标都是从0开始的,也就是说在Python中对于 一个有n个元素的Tuple,自然数下标的范围是0~n-1。
。于是我们取出了第2个和第4个元素。这也是切片操作符的完整 形式,即 [开始:结束:间隔],例如上面的 [1:4:2]。 • 特殊地p,rin这t(个tup间le1隔[::可-1]以) 是负数,表示反向间隔,例如
修改
• 这里说“修改”并不是原位的修改,因为Tuple的元素一旦指定就 不可再修tu改ple,1 而= (是1, 通3,过5,创7,建9)一个新的 Tuple 来实现修改。
• 这段代码[1会, 2输, 出3, :4, 5, 6, 8, 9, 10, 11]
[8888, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11]
添加
• extend接收一个参数,内容为要合并进这个list的一个可迭代对象 ,所以这里可以传入一个List或者Tuple。
• insert接收两个参数,分别是下标和被插入的对象,可以在指定下 标位置插入指定对象。
• 这段代码会输出:[1, 3, 4, 5] • del一般用来删除指定位置的元素。
删除:pop 方法
• pop方法没有参数,默认删除最后一个元素,比如: list1 = [1, 2, 3, 4, 5] print(list1.pop()) print(list1)
• 这段代码5会输出:
[1, 2, 3, 4]
下一章函数中讲到,这里只要知道这样会使print不再自动换行就 行了。 • 我们可以通过一个 for 循环或者 while 循环直接顺序访问元组的内 容。显然for循环不仅可读性高而且更加简单,在大多数情况下应 该优先采用for循环。 • 另外值得一提的是,之所以Tuple可以这样用for遍历是因为Tuple 包括后面马上要提到的List和Dict对象本身是一个可迭代的对象, 这个概念之后会细讲,这里只要学会for循环的用法就行了。
查找
• 在 Tuple.中if 查3 i找n 元tup素le1可: 以用 in,比如:
print('We found 3!') else:
print('No 3!')
• 这段代码会输出: We found 3! • in 是一个使用广泛的判断包含的运算符,类似地还有 not in。in的
作用就是判断特定元素是否在某个对象中,如果包含就返回 True ,否则返回 False。
添加
• 输出: [1, 2, 3, 4, 5, 6] • append方法的作用是在List后面追加一个元素,类似地,我们还有
extend 和liisnts2er=t可[8以, 9用, 1于0,添11加] 元素,比如:
list1.extend(list2) print(list1) list1.insert(0, 8888) print(list1)
tuple2 = (2, 4, 6, 8)
tuple3 = tuple1 + tuple2
print(tuple3)
tuple4 = tuple1 * 2
print(tuple4)
•
这段代码会输出: (1, 3, 5, 7, 9, 2, 4, 6, 8)
(1, 3, 5, 7, 9, 1, 3, 5, 7, 9)
切片:取连续的元素
• 特殊地,如果我们从第0个开始取,或者我们要一直取到最后一个 ,我们可pri以nt省(tu略pl相e1[应:3]的) 参数,比如:
print(tuple1[3:])
• 第一句表示从第1个元素取到第3个元素,第二句表示从第4个元素 取到最后一个,所以输出为:
(1, 3, 5) (7, 9)
list1[2:4] = [111, 222] print(list1)
• 这段代码[1会, 2输, 1出11,:222, 5]
修改
• 也可以等间隔赋值:
list1 = [1, 2, 3, 4, 5] list1[::2] = [111, 222, 333] print(list1)