? Python四大结构 的康熙大辞典
Python 🌲
上一篇文章链接:《Python学习笔记①——基础语法》. 下一篇文章链接: 🚧 🚧 …
一、字符串 string
??● 在处理文本信息、输入输出相关设置、路径配置等操作时,我们就要用到字符串。
??● Python 中字符串的格式有如下 4 种:
str_a = " 我是字符串 "
str_b = ' 你说:"我也是字符串" '
str_c = ''' 他说:"我不是字符串才怪" '''
str_d = """ 她说:"我和你们一样" """
1.1 字符串的索引
??● 所谓 “索引” 又叫 “下标” ,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间。
??● 如果有字符串: my_hometown = 'ChongQing' ,在内存中的实际存储如下:
??● 如果想取出部分字符,那么可以通过 下标 的方法,如下面的代码所示:(注意 Python 中下标从 0 开始)
my_hometown = 'ChongQing'
print(my_hometown [0])
print(my_hometown [1])
1.2 字符串的切片
??● 切片:指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。
??■ 切片的语法:[起始 : 结束 : 步长]。也可以简化为 [起始 : 结束]
??● 注意:选取的区间从“起始位” 开始,到 “结束位” 的前一位结束(不包含结束位本身)。
??● 字符串常见的切片操作如下:
str = '012345678'
print('例子1: ' + str[3:7])
print('例子2: ' + str[:])
print('例子3: ' + str[1:])
print('例子4: ' + str[:5])
print('例子5: ' + str[:-1])
print('例子6: ' + str[-4:-1])
print('例子7: ' + str[1:5:2])
print('例子8: ' + str[::-1])
??● 运行结果:
??● 补充说明:索引是通过下标取某一个元素,而切片是通过下标去某一段元素。
1.3 字符串的常用操作(方法)
??● 我们先定义一个字符串为 my_str = 'hello world, hello 2022!' 。
1.3.1 find()、index() 函数
??■ find()格式:
my_str.find(str, start, end)
???功能:在左闭右开区间[start, end) 里检测str 是否包含在my_str 中,如果是返回开始的索引值,否则返回-1 。
??● 样例如下:
import string
my_str = 'hello world, hello 2022!'
str = '2022'
print(my_str.find(str))
str = 'world'
print(my_str.find(str, 0, len(my_str)))
str = '2088'
print(my_str.find(str, 0, len(my_str)))
??● 运行结果:
??■ index()格式:
my_str.index(str, start, end)
???功能:跟find() 方法一样,只不过如果str 不在mystr 中会报一个异常,别无大样。
1.3.2 count() 函数
??■ 格式:
my_str.count(str, start, end)
???功能:返回str 在左闭右开区间[start, end) 中mystr 里面出现的次数。
??● 样例如下:
import string
my_str = 'hello world, hello 2022!'
str = 'hello'
print(my_str.count(str))
str = 'world'
print(my_str.count(str, 0, len(my_str)))
str = '2088'
print(my_str.count(str, 0, len(my_str)))
??● 运行结果:
1.3.3 replace() 函数
??■ 格式:
my_str.replace(str1, str2, count))
???功能:把my_str 中的str1 替换成str2 ,如果count 指定,则替换不超过count 次。
??● 样例如下:
import string
my_str = 'hello world, hello 2022!'
str_1 = 'hello'
str_2 = 'HELLO'
my_str = my_str.replace(str_1, str_2, 1)
print(my_str)
my_str = 'hello world, hello 2022!'
str_1 = '2'
str_2 = '8'
my_str = my_str.replace(str_1, str_2)
print(my_str)
??● 运行结果:
1.3.4 split() 函数
??■ 格式:
my_str.split(str=" ", max_split)
???功能:以str 为分隔符切片my_str ,如果max_split 有指定值,则仅分隔出max_split + 1 个子字符串。
??● 样例如下:
import string
my_str = 'hello world! hello 2022!'
str = ' '
my_str = my_str.split(str)
print(my_str)
my_str = 'hello world! hello 2022!'
str = ' '
my_str = my_str.split(str, 2)
print(my_str)
??● 运行结果:
1.3.5 capitalize()、title() 函数
??■ capitalize()格式:
my_str.capitalize()
???功能:把字符串的第一个字符大写。
??■ title()格式:
my_str.title()
???功能:把字符串的每个单词首字母大写。
1.3.6 startswith()、endswith() 函数
??■ startswith()格式:
my_str.startswith(str)
???功能:检查字符串my_str 是否是以str 开头, 是则返回True ,否则返回 False 。
??■ endswith()格式:
my_str.endswith(str)
???功能:检查字符串my_str 是否是以str 结束, 是则返回True ,否则返回 False 。
1.3.7 lower()、upper() 函数
??■ lower()格式:
my_str.lower()
???功能:将my_str 中的所有大写字符转换为小写字符。
??■ upper()格式:
my_str.upper()
???功能:将my_str 中的所有小写字符转换为大写字符。
1.3.8 ljust()、 rjust()、center() 函数
??■ ljust()格式:
my_str.ljust(width)
???功能:返回一个左对齐的原字符串(系统默认的是左对齐),并使用空格填充至长度为width 的新字符串。
??■ rjust()格式:
my_str.rjust(width)
???功能:返回一个右对齐的原字符串(系统默认的是左对齐),并使用空格填充至长度为width 的新字符串。
??● 样例如下:
import string
my_str = '2022!'
print(my_str)
my_str = my_str.rjust(10)
print(my_str)
??● 运行结果:
??■ center()格式:
my_str.center(width)
???功能:返回一个居中的原字符串,并使用空格填充至长度width 的新字符串。
1.3.9 lstrip()、 rstrip() 、strip() 函数
??■ lstrip()格式:
my_str.lstrip(width)
???功能:删除my_str 左边的空白字符。
??■ rstrip()格式:
my_str.rstrip(width)
???功能:删除my_str 右边的空白字符。
??■ strip()格式:
my_str.strip(width)
???功能:删除my_str 两端的空白字符。
1.3.10 rfind()、rindex() 函数
??■ rfind()格式:
my_str.rfind(str, start, end)
???功能:类似于find() 函数,只不过是从右边开始查找,找查区间也是左闭右开[start, end) 。
??■ rindex()格式:
my_str.rind(str, start, end)
???功能:类似于index() 函数,只不过是从右边开始查找,找查区间也是左闭右开[start, end) 。
1.3.11 partition()、rpartition() 函数
??■ partition() 格式:
my_str.partition(str)
???功能:把my_str 以str 分割成三部分:str前面的字符串 、str 和str后面的字符串 。
??● 样例如下:
import string
my_str = 'hello world! hello 2022!'
str = 'world'
my_str = my_str.partition(str)
print(my_str)
??● 运行结果:
??■ rpartition() 格式:
my_str.rpartition(str)
???功能:类似于partition() 函数,只不过是从右边开始。
1.3.12 splitlines() 函数
??■ 格式:
my_str.splitlines()
???功能:按照行(即\n )分隔,返回一个包含各行作为元素的列表
??● 样例如下:
import string
my_str = 'hello world!\nhello\n2022!'
my_str = my_str.splitlines()
print(my_str)
??● 运行结果:
1.3.13 isalpha()、isdigit()、isalnum()、isspace() 函数
??■ isalpha()格式:
my_str.splitlines()
???功能:如果my_str 所有字符都是字母(注:空格不算)则返回True ,否则返回False 。
??■ isdigit()格式:
my_str.isdigit()
???功能:如果my_str 所有字符都是数字(注:空格不算)则返回True ,否则返回False 。
??■ isalnum()格式:
my_str.isalnum()
???功能:如果my_str 所有字符都是字母或者数字(注:空格不算)则返回True ,否则返回False 。
??■ isspace()格式:
my_str.isspace()
???功能:如果my_str 所有字符都是空格则返回True ,否则返回False 。
1.3.14 join() 函数
??■ 格式:
str.join(my_str)
???功能:将str 插入到my_str 的每一个元素中去,并返回这个新的字符串。
??● 样例如下:
import string
my_str = 'hello world'
str = ","
print(str.join(my_str))
??● 运行结果:
二、列表 list
??● 为方便处理有规律且装有信息的 “数组” ,我们引入列表。
??■ 格式:[元素1, 元素2, 元素3, ..., 元素n]
??● 注意:列表中的元素可以是不同类型的。
??● 和 Python 的字符串一样,其列表也有索引与切片,操作大差不差。
2.1 列表的索引
??● 所谓 “索引” 又叫 “下标” ,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间。
??● 如果有列表: my_like_thing = ['meat', 7, 'rice', 123.4] ,在内存中的实际存储如下:
??● 如果想取出部分字符,那么可以通过 下标 的方法,如下面的代码所示:(注意 Python 中下标从 0 开始)
my_like_thing = ['meat', 7, 'rice', 123.4]
print(my_hometown [0][0])
print(my_hometown [3])
2.2 列表的切片
??● 切片:指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。
??■ 切片的语法:[起始 : 结束 : 步长]。也可以简化为 [起始 : 结束]
??● 注意:选取的区间从“起始位” 开始,到 “结束位” 的前一位结束(不包含结束位本身)。
??● 列表常见的切片操作如下:【和字符串的切片类似】
my_like_thing = ['meat', 7, 'rice', 123.4, 'tomato', [1, 2, 3], ' ', 'water']
print('例子1: ', end='')
print(my_like_thing[3:7])
print('例子2: ', end='')
print(my_like_thing[:])
print('例子3: ', end='')
print(my_like_thing[1:])
print('例子4: ', end='')
print(my_like_thing[:5])
print('例子5: ', end='')
print(my_like_thing[:-1])
print('例子6: ', end='')
print(my_like_thing[-4:-1])
print('例子7: ', end='')
print(my_like_thing[1:5:2])
print('例子8: ', end='')
print(my_like_thing[::-1])
??● 运行结果:
??● 补充说明:列表中可以嵌套列表。
2.3 列表关于“增”的操作
2.3.1 append() 函数
??■ 格式:
my_list.append(temp)
???功能:把temp 添加到列表my_list[] 末尾。
??● 样例如下:
my_list = ['meat', 7, 'rice', 123.4]
print(my_list)
temp = input('请输入要添加的东西:')
my_list.append(temp)
print(my_list)
??● 运行结果:
2.3.2 insert() 函数
??■ 格式:
my_list.insert(index, temp)
???功能:在列表my_list 的指定下标index 位置处的前面插入元素temp 。
??● 样例如下:
my_list = ['meat', 7, 'rice', 123.4]
print(my_list)
temp = 100
my_list.insert(1, temp)
print(my_list)
??● 运行结果:
2.3.3 extend() 函数
??■ 格式:
my_list.extend(other_list)
???功能:将另一个列表other_list 中的元素逐一添加到列表my_list 中。
??● 样例如下:
my_list = ['meat', 7, 'rice', 123.4]
other_list = [7, 8, 9]
print('原列表 my_list 为: ', end='')
print(my_list)
my_list = ['meat', 7, 'rice', 123.4]
my_list.append(other_list)
print('使用append()函数添加 other_list 后的 my_list 为: ', end='')
print(my_list)
my_list = ['meat', 7, 'rice', 123.4]
my_list.extend(other_list)
print('使用extend()函数添加 other_list 后的 my_list 为: ', end='')
print(my_list)
??● 运行结果:
2.4 列表关于“删”的操作
2.4.1 del 函数
??■ 常用格式:
del my_list[index]
???功能:删除列表my_list 中的下标为index 的元素。
??● 样例如下:
my_list = ['meat', 7, 'rice', 123.4]
print(my_list)
del my_list[0]
print(my_list)
my_list = ['meat', 7, 'rice', 123.4]
del my_list[0:3]
print(my_list)
??● 运行结果:
2.4.2 pop() 函数
??■ 常用格式:
my_list.pop()
???功能:删除列表my_list 最后一个元素。
??● 样例如下:
my_list = ['meat', 7, 'rice', 123.4]
print(my_list)
my_list.pop()
print(my_list)
my_list = ['meat', 7, 'rice', 123.4]
my_list.pop(0)
print(my_list)
??● 运行结果:
2.4.3 remove() 函数
??■ 常用格式:
my_list.remove(temp)
???功能:删除列表my_list 中的元素temp 。
??● 样例如下:
my_list = ['meat', 7, 'rice', 123.4]
print(my_list)
my_list.remove('rice')
print(my_list)
??● 运行结果:
2.5 列表关于“找”的操作
2.5.1 in 和 not in
??■ 常用格式:
temp in my_list
???功能:in ——如果存在那么结果为true ,否则为false 。not in 与之效果相反。
??● 样例如下:
my_list = ['meat', 7, 'rice', 123.4]
print(my_list)
temp = 'meat'
ans = temp in my_list
print(ans)
if 188.8 in my_list:
print('188.8 在 my_list 中')
else:
print('188.8 不在 my_list 中')
??● 运行结果:
2.5.2 index() 函数
??● 注:列表中的index() 函数与字符串中的用法相同。
??■ 常用格式:
my_list.index(temp, start, end)
???功能:在左闭右开的区间[start, end) 列表my_list 中,找查元素temp ,若找到就返回其下标,否则会报一个异常。
??● 样例如下:
my_list = ['meat', 7, 'rice', 123.4]
print(my_list)
temp = 123.4
print(my_list.index(temp, 0, 4))
temp = 'water'
print(my_list.index(temp))
??● 运行结果:
2.5.3 count() 函数
??● 注:列表中的count() 函数与字符串中的用法相同。
??■ 常用格式:
my_list.index(temp, start, end)
???功能:返回temp 在my_list 的左闭右开区间[start, end) 中出现的次数。
2.6 列表关于“改”的函数
2.6.1 下标法
??● 一般我们通过指定下标来访问列表元素,因此修改元素的时候,直接重新赋值即可。
??● 样例如下:
my_list = ['meat', 7, 'rice', 123.4]
print(my_list)
my_list[0] = 888
print(my_list)
??● 运行结果:
2.7 列表的排序函数
2.7.1 sort() 函数
??■ 常用格式:
my_list.sort()
???功能:将my_list 按特定顺序重新排列,默认为由小到大。添加参数reverse=True 可改为倒序。
??● 样例如下:
my_list = [1, 7, 3.2, 5]
print(my_list)
my_list.sort()
print(my_list)
my_list = [1, 7, 3.2, 5]
my_list.sort(reverse=True)
print(my_list)
my_list = ['abc', 'xyz', 'opq', 'ABC']
my_list.sort()
print(my_list)
??● 运行结果:
2.7.2 reverse() 函数
??■ 常用格式:
my_list.reverse()
???功能:将my_list 逆置。(没有进行从小到大的排序,只是逆置)
??● 样例如下:
my_list = ['meat', 7, 'rice', 123.4]
print(my_list)
my_list.reverse()
print(my_list)
??● 运行结果:
2.8 列表的循环遍历
2.8.1 列表的 while() 循环
??● 样例如下:
my_list = ['meat', 7, 'rice', 123.4]
print(my_list)
print('\nwhile()循环打印结果为:')
length = len(my_list)
i = 0
while i < length:
print(my_list[i])
i += 1
??● 运行结果:
2.8.2 列表的 for() 循环
??● while() 循环是一种基本的遍历列表数据的方式,但最常用且简单的方式是使用for() 循环。
??● 样例如下:
my_list = ['meat', 7, 'rice', 123.4]
print(my_list)
print('\nfor()循环打印结果为:')
for i in my_list:
print(i)
??● 运行结果:
三、元组 tuple
??● Python 的元组与列表类似,不同之处在于元组的元素不能修改和删除。元组使用小括号,而列表使用方括号。
??■ 元组的格式:(元素1, 元素2, 元素3, ..., 元素n)
??● Python 中元组的作用:作为参数传递给函数调用、或是从函数调用那里获得参数时,保护其内容不被外部接口修改。
??● 元组是一种序列,它支持序列的基本操作,包括索引、切片、序列加、序列乘、in 、len() 、max() 、min() 、index() 、count() 等,这些和 Python 的字符串、列表操作类似。
??● 元组不可修改,指的是元组中每个元素的指向永远不变。例如,元组my_tuple=('meat',2022,['Python',71]) ,其中my_tuple[1] = 2022 是整型数据,且不能修改my_tuple[1] ;但a[2] = [ 'Python',71] 是列表,可以修改a[2][1] 。
四、字典 dict
??● 当存储的数据要动态添加、删除的时候,我们一般使用列表,但是列表有时会遇到一些麻烦。(比如说,我们在生活中查新华字典时,我们忘了某个字怎么写,但我们知道它的拼音,这样就可以根据拼音直接且快速索引到该字,就不用像列表那样进行遍历找查)
??■ 字典的格式:{键1: 值1, 键2: 值2, 键3: 值3, ..., 键n: 值n}
??● 列表更适合保存多个商品、多个姓名、多个时间,这样的相似数据。
??● 字典更适合保存一个商品的不同信息(热量、质量、保质期和成分等)、一个人的不同信息,这样的不同数据。
4.1 字典的索引
??● 和列表类似,但是字典的 “下标” 有点特别。
??● 如果有字典: my_dict = {'eat_1': 'meat', 'num': [1, 2, 3], 'eat_2': 'rice', 888: 123.4} ,在内存中的实际存储如下:
??● 样例如下:
my_dict = {'eat_1': 'meat', 'num': [1, 2, 3], 'eat_2': 'rice', 888: 123.4}
print(my_dict)
print(my_dict['eat_1'])
print(my_dict['eat_1'][2])
print(my_dict['num'])
print(my_dict[888])
??● 运行结果:
??● 补充说明:Python 的字典中没有切片的操作。
4.2 字典关于 “增” 的操作(新 “键” 法)
??● 如果在使用变量名['键'] = 数据 时,这个'键' 在字典中,不存在,那么就会新增这个元素。
??● 样例如下:
my_dict = {'班长': '李逵', '团支书': '鲁智深'}
print(my_dict)
my_dict['学习委员'] = '张飞'
print(my_dict)
??● 运行结果:
4.3 字典关于 “删” 的操作
4.3.1 del 函数
??■ 常用格式:
del my_dict[key]
???功能:删除指定my_dict 中键为key 的元素。
??● 样例如下:
my_dict = {'班长': '李逵', '团支书': '鲁智深', '学习委员':'张飞'}
print(my_dict)
del my_dict['团支书']
print(my_dict)
??● 运行结果:
4.3.2 clear() 函数
??■ 常用格式:
my_dict.clear()
???功能:清空整个字典my_dict 。
??● 样例如下:
my_dict = {'班长': '李逵', '团支书': '鲁智深', '学习委员':'张飞'}
print(my_dict)
my_dict.clear()
print(my_dict)
??● 运行结果:
4.4 字典关于 “查” 的操作
4.4.1 直接查 ‘键’ 法
??● 样例如下:
my_dict = {'班长': '李逵', '团支书': '鲁智深', '学习委员':'张飞'}
print(my_dict['班长'])
4.4.2 get() 函数
??■ 常用格式:
my_dict.get(key, info)
???功能:在字典my_dict 找查键为key 的元素,能找到就返回对应的value(值) ,若未找到就返回info (可省略,未找到默认返回None )。
??● 样例如下:
my_dict = {'班长': '李逵', '团支书': 0.07, '学习委员':'张飞'}
print(my_dict)
print(my_dict.get('团支书', '未找到该元素'))
print(my_dict.get('副班长'))
print(my_dict.get('副班长', '未找到该元素'))
??● 运行结果:
4.5 字典关于 “改” 的操作(改 “键” 法)
??● 在字典汇中通过'键' 找到相应元素,即可修改。
??● 样例如下:
my_dict = {'班长': '李逵', '团支书': '鲁智深', '学习委员':'张飞'}
print(my_dict)
my_dict['团支书'] = '天蓬元帅'
print(my_dict)
??● 运行结果:
4.5 字典的遍历
4.5.1 遍历字典的 key(键)
??● 样例如下:
my_dict = {'班长': '李逵', '团支书': '鲁智深', '学习委员':'张飞'}
print(my_dict)
for i in my_dict.keys():
print(i)
??● 运行结果:
4.5.2 遍历字典的 value(值)
??● 样例如下:
my_dict = {'班长': '李逵', '团支书': '鲁智深', '学习委员':'张飞'}
print(my_dict)
for i in my_dict.values():
print(i)
??● 运行结果:
4.5.3 遍历字典的 item(项)
??● 样例如下:
my_dict = {'班长': '李逵', '团支书': '鲁智深', '学习委员':'张飞'}
print(my_dict)
for i in my_dict.items():
print(i)
??● 运行结果:
4.5.4 遍历字典的 key-value(键值对)
??● 样例如下:
my_dict = {'班长': '李逵', '团支书': '鲁智深', '学习委员':'张飞'}
print(my_dict)
for key, value in my_dict.items():
print('key = %s, value = %s' % (key, value))
??● 运行结果:
五、四种数据结构的一些公用操作
??● 一些公用的运算符:
运算符 | Python 表达 式 | 结果 | 功能 | 支持的数据类型 |
---|
+ | [1, 2] + [3, 4] | [1, 2, 3, 4] | 合并 | 字符串、列表、元组 | * | [‘闪’] * 3 | [‘闪’, ‘闪’, ‘闪’] | 复制 | 字符串、列表、元组 | in | '团支书' in {'班长': '李逵', '团支书': '鲁智深'} | True | 元素是否存在(注:字典只看'键' ) | 字符串、列表、元组、字典 | + | ‘H’ not in ‘Hello’ | False | 元素是否不存在(注:字典只看'键' ) | 字符串、列表、元组、字典 |
??● 一些公用的 Python 内置函数:
函数(方法) | 功能 |
---|
len(该对象) | 计算该对象中的元素个数 | max(该对象) | 返回该对象中元素最大值(如果是字典,则比'键' ) | min(该对象) | 返回该对象中元素最小值(如果是字典,则比'键' ) | zip(对象1,对象2 ) | 合并遍历这 2 个对象中的元素(注:zip 处理的两个对象的元素个数必须一样) |
??● 样例如下:
import string
my_str = 'Hello 2020!'
my_list = [2, 1, 3, 4]
my_tuple = ('Chang', 'Qing', 'Hao')
my_dict = {'班长': '李逵', '团支书': '鲁智深', '学习委员': '张飞', 'num': 7}
print('my_str 的长度为: ' + str(len(my_str)))
print('my_list 的长度为: ' + str(len(my_list)))
print('my_tuple 的长度为: ' + str(len(my_tuple)))
print('my_dict 的长度为: ' + str(len(my_dict)))
print('max(my_tuple) 的结果为 ' + max(my_tuple))
print('min(my_list) 的结果为 ' + str(min(my_list)))
for x, y in zip(my_list, my_dict):
print(x, y)
??● 运行结果:
六、参考书籍
[1]《Python编程_从入门到实践》
[2]《Python程序设计——第3版》
上一篇文章链接:《Python学习笔记①——基础语法》.
下一篇文章链接: 🚧 🚧 …
?? ?? 整理笔记过程中,难免有疏误,如有发现,可以评论或者私信,及时更正,谢谢 ??
|