第八天Python之高级变量类型

    技术2022-07-10  99

    目标

    列表元组字典字符串公共方法变量高级

    知识点回顾

    Python中数据类型可以分为数字型和非数字型

    数字型 1. 整型(int) 2. 浮点型(float) 3. 布尔型(bool) - 真True 非0数 ——非零即真 - 假False 0 4. 复数型 - 主要用于科学计算,例如:平面场问题、波动问题、电感电容等问题

    非数字型 - 字符串 - 列表 - 元组 - 字典

    在Python中,所有非数字型变量都支持以下特点: - 都是一个序列sequence,也可以理解为容器 - 取值[ ] - 遍历for in - 计算长度、最大/最小值、比较、删除 - 链接 + 和重复 * - 切片

    一、列表

    1. 列表的定义

    List(列表)是Python中使用最频繁的数据类型,在其他语言中通常叫做数组专门用于储存一串信息列表用[ ] 定义,数据之间使用,分隔列表的索引从 0 开始 1. 索引就是数据在列表中的位置编号,索引又可以被称为下标

    注意: 从列表中取值时,如果超出索引范围,程序会报错

    name_list = ["zhangsan", "lisi", "wangwu"]

    2. 列表常用操作

    在ipython3中定义一个列表,例如:name_list = []输入name_list.按下Tab键,ipython会提示列表能够使用的方法如下: In [1]: name_list. name_list.append name_list.index name_list.remove name_list.count name_list.insert name_list.reverse name_list.extend name_list.pop name_list.sort

    使用 del 关键字(delete)同样可以删除列表中元素del 关键字本质上是用来将一个变量从内存中删除的如果使用 del 关键字将变量从内存中删除,后续代码就不能再使用这个变量了 del name_list[1]

    在日常开发中,要从列表删除数据,建议使用列表提供的方法

    关键字、函数和方法(科普)

    关键字是Python内置的、具有特殊意义的标识符 In [1]: import keyword In [2]: print(keyword.kwlist) In [3]: print(len(keyword.kwlist))

    关键字后面不需要使用括号

    函数封装了独立功能,可以直接调用 函数名(参数)

    函数需要死记硬背

    方法和函数类似,同样是封装了独立的功能方法需要通过对象来调用,表示针对这个对象要做的操作 对象.方法(参数)

    在变量后面输入. 然后选择针对这个变量要执行的操作,记忆起来比函数要简单很多

    3. 循环遍历

    遍历就是从头到尾依次从列表中获取数据 - 在循环体内部针对每一个元素,执行相同的操作在Python中为了提高列表的遍历效率,专门提供的迭代 iteration 遍历使用 for 就能够实现迭代遍历 # for 循环内部使用的变量 in 列表 for name in name_list: 循环内部针对列表元素进行操作 print(name)

    应用场景

    尽管Python的列表中可以存储不同类型的数据但是在开发中,更多的应用场景是 1. 列表存储相同类型的数据 2. 通过迭代遍历,在循环体内部,针对列表中的每一项元素,执行相同的操作

    二、元组

    1. 元组的定义

    Tuole(元组)与列表类似,不同之处在于元组的元素不能修改 - 元组表示多个元素组成的序列 - 元组在Python开发中,有特定的应用场景用于存储一串信息,数据之间使用,分隔元组用()定义元组的索引从 0 开始 - 索引就是数据在元组中的位置编号 info_tuple = ("zhangsan", 18, 1.75)

    创建空元组

    tuple = ()

    元组中只包含一个元素时,需要在元素后面添加逗号

    info_tuple = (50, )

    2. 元组常用操作

    在ipython3 中定义一个元组,例如:info = ()输入Info.按下Tab键,ipython 会提示元组能够使用的函数如下: Info.count info.index

    有关元组的常用操作可以参照上图练习

    3. 循环遍历

    取值就是从元组中获取存储在指定位置的数据遍历就是从头到尾依次从元组中获取数据 # for item in info: 循环内部针对元组元素进行操作 print(item) 在Python中,可以使用for循环遍历所有非数字型类型的变量:列表、元组、字典以及字符串提示:在实际开发中,除非能够确认元组中的数据类型,否则针对元组的循环遍历需求并不是很多

    4. 应用场景

    尽管可以使用for in 遍历元组但是在开发中,更多的应用场景是: - 函数的参数和返回值,一个函数可以接收任意多个参数,或者一次返回多个数据 - 有关函数的参数和返回值,在后续函数高级给大家介绍 - 格式字符串,格式字符串后面的()本质上就是一个元组 - 让列表不可以修改,以保护数据安全 info = ("zhangsan", 18) print("%s 的年龄是 %d" % info)

    元组和列表之间的转换

    使用list 函数可以把元组转换成列表 list(元组) 使用tuple函数可以把列表转换成元组 tuple(列表)

    三、字典

    1. 字典的定义

    dictionary(字典)是除列表以外Python之中最灵活的数据类型字典同样可以用来存储多个数据 - 通常用于存储描述一个物体的相关信息和列表的区别 - 列表是有序的对象集合 - 字典是无序的对象集合字典用 {} 定义字典使用键值对存储数据,键值对之间使用,分隔 - 键 key 是索引 - 值 value 是数据 - 键****和值之间使用 : 分隔 - 键必须是唯一的 - 值可以取任何数据类型,但键只能使用字符串、数字或元组 xiaoming = {"name" : "小明", “age” : 18, "gender" : True, "height" : 1.75}

    2. 字典常用操作

    在ipython3中定义一个字典,例如:xiaoming = {}输入xiaoming. 按下Tab键,ipython会提示字典能够使用的函数如下: In [2]: xiaoming. xiaoming.clear xiaoming.items xiaoming.setdefault xiaoming.copy xiaoming.keys xiaoming.update xiaoming.fromkeys xiaoming.pop xiaoming.values xiaoming.get xiaoming.popitem

    有关字典的常用操作可以参照上图练习

    3. 循环遍历

    遍历就是依次从字典中获取所有键值对 # for 循环内部使用的‘ key 的变量 ’ in 字典 for k in xiaoming: print("%s : %s" % (k, xiaoming[k]))

    提示:在实际开发中,由于字典每一个键值对保存数据的类型是不同的,针对字典的循环遍历需求并不是很多

    4. 应用场景

    尽管可以使用for in 遍历字典但是在开发中,更多的应用场景是: - 使用多个键值对,存储描述一个物体的相关信息——描述更复杂的数据信息 - 将多个字典放在一个列表中,再进行遍历,在循环体内部针对每一个字典进行相同的处理 card_list = [{"name" : "张三", "qq" : "12345", "phone" : "110",}, {"name" : "小明", "qq" : "54321", "phone" : "10086"}]

    四、字符串

    1. 字符串的定义

    字符串就是一串字符,是变成语言中表示文本的数据类型在Python中可以使用一对双引号 “ 或者一对单引号 ‘ 定义一个字符串 - 虽然可以使用 " 或者 ’ 做字符串的转义,但是在实际开发中: 1. 如果字符串内部需要使用 " ,可以使用 ’ 定义字符串 2. 如果字符串内部需要使用 ‘ , 可以使用 “ 定义字符串可以使用索引获取一个字符串中指定位置的字符,索引计数从0开始也可以使用 for 循环遍历字符串中每一个字符

    大多数变成语言都是用 " 来定义字符串

    string = "Hello Python" for c in string: print(c)

    2. 字符串的常用操作

    在ipython3 中定义一个字符串,例如: hello_str = “”输入 hello_str. 按下Tab键,ipython 会提示字符串能够使用的方法如下: In [2]: hello_str. hello_str.capitalize hello_str.find hello_str.isdigit hello_str.isupper hello_str.replace hello_str.split hello_str.upper hello_str.casefold hello_str.format hello_str.isidentifier hello_str.join hello_str.rfind hello_str.splitlines hello_str.zfill hello_str.center hello_str.format_map hello_str.islower hello_str.ljust hello_str.rindex hello_str.startswith hello_str.count hello_str.index hello_str.isnumeric hello_str.lower hello_str.rjust hello_str.strip hello_str.encode hello_str.isalnum hello_str.isprintable hello_str.lstrip hello_str.rpartition hello_str.swapcase hello_str.endswith hello_str.isalpha hello_str.isspace hello_str.maketrans hello_str.rsplit hello_str.title hello_str.expandtabs hello_str.isdecimal hello_str.istitle hello_str.partition hello_str.rstrip hello_str.translat

    提示:正是因为 python 内置提供的方法最有多,才使得在开发时,能够针对字符串进行更加灵活的操作!应对更多的开发需求!

    1)判断类型 - 9

    方法说明string.isspace()如果 string 中包含空格,则返回 Truestring.isalnum()如果 string 至少有一个字符并且所有字符都是字母或数字则返回 Truestring.isalpha()如果 string 至少有一个字符并且所有字符都是字母则返回 Truestring.isdecimal()如果 string 只包含数字则返回 True ,全角数字string.isdigit()如果 string 只包含数字则返回 True,全角数字、(1)、\u00b2string.isnumeric()如果 string 只包含数字则返回True,全角数字,汉字数字string.istitle()如果 string 是标题化的(每个单词的首字母大写)则返回Truestring.islower()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回Truestring.isupper()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回True

    2) 查找和替换 - 7

    方法说明string.startswith(str)检查字符串是否以 str 开头,是则返回 Truestring.endswith(str)检查字符串是否以 str 结束,是则返回 Truestring.find(str,start=0,end=len(string))检查 str 是否包含在 string 中,如果 start 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回 -1string.rfind(str,start=0,end=len(string))类似于 find() 函数,不过是从右边开始查找string.index(str,start=0,end=len(string))跟 find() 方法类似,只不过如果 str 不在 string 会报错string.rindex(str,start=0,end=len(string))类似于 index() ,不过是从右边开始string.replace(old_str,new_str,num=string.count(old))把 string 中的 old_str 替换成 new_str ,如果 num 指定,则替换不超过 num 次

    3)大小写转换 -5

    方法说明string.capitaliza()把字符串的第一个字符大写string.title()把字符串的每个单词首字母大写string.lower()转换 string 中所有大写字符为小写string.upper()转换 string 中的小写字母为大写string.swapcase()翻转 string 中的大小写

    4)文本对齐 -3

    方法说明string.ljust(width)返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串string.rjust(width)返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串string.center(width)返回一个原字符串居中,并使用空格填充至长度 width 的新字符串

    5)去除空白字符 -3

    方法说明string.lstrip()截掉 string 左边(开始)的空白字符string.rstrip()截掉 string 右边(开始)的空白字符string.strip()截掉 string 左右两边的空白字符

    6)拆分和连接 -5

    方法说明string.partition(str)把字符串 string 分成一个 3 元素的元组(str 前面,str,str 后面)string.rpartition(str)类似于 partition() 函数,不过是从右边开始查找string.split(str="",num)以 str 为分隔符切片 string ,如果 num 有指定值,则仅分隔 num + 1 个字符串, str 默认包含‘\r’,’\t’,’\n’ 和空格string.splitlines()按照行(’\r’,’\n’,’\r\n’)分隔,返回一个包含各行作为元素的列表string.join(seq)以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串

    3. 字符串的切片

    切片方法适用于字符串、列表、元组 - 切片使用索引值来限定范围,从一个大的字符串中切出小的字符串 - 列表和元组都是有序的集合,都能够通过索引值获取到对应的数据 - 字典是一个无序的集合,是使用键值对保存数据

    字符串 [开始索引:结束索引:步长]

    注意:

    指定的区间属于左闭右开型 [开始索引, 结束索引) => 开始索引 >= 范围 < 结束索引 - 从起始位开始,到结束位的前一位结束(不包含结束位本身)从头开始,开始索引数字可以省略,冒号不能省略到末尾结束,结束索引数字可以省略,冒号不能省略步长默认为 1 ,如果连续切片,数字和冒号都可以省略

    五、公共方法

    1. python内置函数

    Python 包含了一下内置函数:

    函数描述备注len(item)计算容器中元素个数del(item)删除变量del 有两种方式max(item)返回容器中元素最大值如果是字典,只针对 key 比较min(item)返回容器中元素最小值如果是字典,只针对 key 比较cmp(item1,item2)比较两个值,-1 小于 /0 相等/1 大于python 3.x 取消了 cmp 函数

    注意

    字符串 比较适合以下规则:“0” < “A” < “a”

    2. 切片

    描述Python 表达式结果支持的数据类型切片“0123456789”[::-2]“97531”字符串、列表、元组 切片使用索引值来限定范围,从一个大的字符串中切出小的字符串列表和元组都是有序的集合,都能够通过索引值获取到对应的数据字典是一个无序的集合,是使用键值对保存数据

    3. 运算符

    运算符Python 表达式结果描述支持的数据类型+[1,2] + [3,4][1,2,3,4]合并字符串、列表、元组*[“Hi!”] * 4[“Hi!”,“Hi!”,“Hi!”,“Hi!”]重复字符串、列表、元组in3 in (1,2,3)True元素是否存在字符串、列表、元组、字典not in4 not in (1,2,3)True元素是否不存在字符串、列表、元组、字典> >= == < <=(1,2,3) < (2,2,3)True元素比较字符串、列表、元组

    注意

    in在字典操作时,判断的是字典的键in 和 not in 被称为成员运算符

    成员运算符

    成员运算符用于测试序列中是否包含指定的成员

    运算符描述实例In如果在指定的序列中找到值返回True, 否则返回 False3 in (1,2,3) 返回Truenot in如果在指定的序列中没有找到值返回 True,否则返回False3 not in (1,2,3) 返回False

    注意:在对字典操作时,判断的是字典的键

    4. 完整的 for 循环语法

    在 Python 中完整的 for 循环 的语句如下: for 变量 in 集合: 循环体代码 else: 没有通过 break 退出循环,循环结束后,会执行的代码

    应用场景

    在迭代遍历 嵌套的数据类型时,例如 一个列表包含了多个字典需求:要判断某一个字典中,是否存在指定的值 - 如果存在,提示并且退出循环 - 如果不存在,在循环整体结束后,希望 得到一个统一的提示 students = [ {"name" : "阿土", "age" : 20, “gender” : True, "height" : 1.7, "weight" : 75.0}, {"name" : "小美", "age" : 19, "gender" : False, "height" : 1.6, "weight" : 45.0} ] find_name = "阿土" for stu_dict in students: print(stu_dict) if stu_dict["name"] == find_name: print("找到了 %s" % find_name) # 如果已经找到,应该直接退出循环,而不再遍历后续的元素 break # else: # print("抱歉没有找到 %s" % find_name) else: # 如果希望再搜索列表时,所有的字典检查之后都没有发现需要搜索的目标 # 还希望得到一个统一的提示! print("抱歉没有找到 %s" % find_name) print("循环结束")
    Processed: 0.038, SQL: 9