Python基础之高级变量类型实例详解
本文实例讲述了Python高级变量类型。分享给大家供大家参考,具体如下:
目标
列表
- 元组
- 字典
- 字符串
- 公共方法
- 变量高级
知识点回顾
Python中数据类型可以分为数字型和非数字型
- 数字型
- 整型(int)
- 浮点型(float)
- 布尔型(bool)
- 真True非0数——非零即真
- 假False0
- 复数型(complex)
- 主要用于科学计算,例如:平面场问题、波动问题、电感电容等问题
- 非数字型
- 字符串
- 列表
- 元组
- 字典
- 在Python中,所有非数字型变量都支持以下特点:
- 都是一个序列sequence,也可以理解为容器
- 取值[]
- 遍历forin
- 计算长度、最大/最小值、比较、删除
- 链接+和重复*
- 切片
01.列表
1.1列表的定义
List(列表)是Python中使用最频繁的数据类型,在其他语言中通常叫做数组
- 专门用于存储一串信息
- 列表用[]定义,数据之间使用,分隔
- 列表的索引从0开始
- 索引就是数据在列表中的位置编号,索引又可以被称为下标
注意:从列表中取值时,如果超出索引范围,程序会报错
name_list=["zhangsan","lisi","wangwu"]
1.2列表常用操作
- 在ipython3中定义一个列表,例如:name_list=[]
- 输入name_list.按下TAB键,ipython会提示列表能够使用的方法如下:
In[1]:name_list. name_list.appendname_list.countname_list.insertname_list.reverse name_list.clearname_list.extendname_list.popname_list.sort name_list.copyname_list.indexname_list.remove
|||列表.append(数据)|在末尾追加数据
|||列表.extend(列表2)|将列表2的数据追加到列表|
|2|修改|列表[索引]=数据|修改指定索引的数据|
|3|删除|del列表[索引]|删除指定索引的数据|
|||列表.remove[数据]|删除第一个出现的指定数据|
|||列表.pop|删除末尾数据|
|||列表.pop(索引)|删除指定索引数据|
|||列表.clear|清空列表|
|4|统计|len(列表)|列表长度|
|||列表.count(数据)|数据在列表中出现的次数|
|5|排序|列表.sort()|升序排序|
|||列表.sort(reverse=True)|降序排序|
|||列表.reverse()|逆序、反转|
del关键字(科普)
- 使用del关键字(delete)同样可以删除列表中元素
- del关键字本质上是用来将一个变量从内存中删除的
- 如果使用del关键字将变量从内存中删除,后续的代码就不能再使用这个变量了
delname_list[1]
在日常开发中,要从列表删除数据,建议使用列表提供的方法
关键字、函数和方法(科普)
- 关键字是Python内置的、具有特殊意义的标识符
In[1]:importkeyword In[2]:print(keyword.kwlist) In[3]:print(len(keyword.kwlist))
关键字后面不需要使用括号
- 函数封装了独立功能,可以直接调用
函数名(参数)
函数需要死记硬背
- 方法和函数类似,同样是封装了独立的功能
- 方法需要通过对象来调用,表示针对这个对象要做的操作
对象.方法名(参数)
在变量后面输入.,然后选择针对这个变量要执行的操作,记忆起来比函数要简单很多
1.3循环遍历
- 遍历就是从头到尾依次从列表中获取数据
- 在循环体内部针对每一个元素,执行相同的操作
- 在Python中为了提高列表的遍历效率,专门提供的迭代iteration遍历
- 使用for就能够实现迭代遍历
#for循环内部使用的变量in列表 fornameinname_list: 循环内部针对列表元素进行操作 print(name)
1.4应用场景
尽管Python的列表中可以存储不同类型的数据
- 但是在开发中,更多的应用场景是
- 列表存储相同类型的数据
- 通过迭代遍历,在循环体内部,针对列表中的每一项元素,执行相同的操作
02.元组
2.1元组的定义
- Tuple(元组)与列表类似,不同之处在于元组的元素不能修改
- 元组表示多个元素组成的序列
- 元组在Python开发中,有特定的应用场景
- 用于存储一串信息,数据之间使用,分隔
- 元组用()定义
- 元组的索引从0开始
- 索引就是数据在元组中的位置编号
info_tuple=("zhangsan",18,1.75)
创建空元组
info_tuple=()
元组中只包含一个元素时,需要在元素后面添加逗号
info_tuple=(50,)
2.2元组常用操作
- 在ipython3中定义一个元组,例如:info=()
- 输入info.按下TAB键,ipython会提示元组能够使用的函数如下:
info.countinfo.index
有关元组的常用操作可以参照上图练习
2.3循环遍历
取值就是从元组中获取存储在指定位置的数据
- 遍历就是从头到尾依次从元组中获取数据
#for循环内部使用的变量in元组 foritemininfo: 循环内部针对元组元素进行操作 print(item)
- 在Python中,可以使用for循环遍历所有非数字型类型的变量:列表、元组、字典以及字符串
- 提示:在实际开发中,除非能够确认元组中的数据类型,否则针对元组的循环遍历需求并不是很多
2.4应用场景
尽管可以使用forin遍历元组
- 但是在开发中,更多的应用场景是:
- 函数的参数和返回值,一个函数可以接收任意多个参数,或者一次返回多个数据
- 有关函数的参数和返回值,在后续函数高级给大家介绍
- 格式字符串,格式化字符串后面的()本质上就是一个元组
- 让列表不可以被修改,以保护数据安全
- 函数的参数和返回值,一个函数可以接收任意多个参数,或者一次返回多个数据
info=("zhangsan",18) print("%s的年龄是%d"%info)
元组和列表之间的转换
- 使用list函数可以把元组转换成列表
list(元组)
使用tuple函数可以把列表转换成元组
tuple(列表)
03.字典
3.1字典的定义
- dictionary(字典)是除列表以外Python之中最灵活的数据类型
- 字典同样可以用来存储多个数据
- 通常用于存储描述一个物体的相关信息
- 和列表的区别
- 列表是有序的对象集合
- 字典是无序的对象集合
- 字典用{}定义
- 字典使用键值对存储数据,键值对之间使用,分隔
- 键key是索引
- 值value是数据
- 键和值之间使用:分隔
- 键必须是唯一的
- 值可以取任何数据类型,但键只能使用字符串、数字或元组
xiaoming={"name":"小明", "age":18, "gender":True, "height":1.75}
3.2字典常用操作
在ipython3中定义一个字典,例如:xiaoming={}
- 输入xiaoming.按下TAB键,ipython会提示字典能够使用的函数如下:
In[1]:xiaoming. xiaoming.clearxiaoming.itemsxiaoming.setdefault xiaoming.copyxiaoming.keysxiaoming.update xiaoming.fromkeysxiaoming.popxiaoming.values xiaoming.getxiaoming.popitem
有关字典的常用操作可以参照上图练习
3.3循环遍历
- 遍历就是依次从字典中获取所有键值对
#for循环内部使用的`key的变量`in字典 forkinxiaoming: print("%s:%s"%(k,xiaoming[k]))
提示:在实际开发中,由于字典中每一个键值对保存数据的类型是不同的,所以针对字典的循环遍历需求并不是很多
3.4应用场景
- 尽管可以使用forin遍历字典
- 但是在开发中,更多的应用场景是:
- 使用多个键值对,存储描述一个物体的相关信息——描述更复杂的数据信息
- 将多个字典放在一个列表中,再进行遍历,在循环体内部针对每一个字典进行相同的处理
card_list=[{"name":"张三", "qq":"12345", "phone":"110"}, {"name":"李四", "qq":"54321", "phone":"10086"} ]
04.字符串
4.1字符串的定义
字符串就是一串字符,是编程语言中表示文本的数据类型
- 在Python中可以使用一对双引号"或者一对单引号'定义一个字符串
- 虽然可以使用"或者'做字符串的转义,但是在实际开发中:
- 如果字符串内部需要使用",可以使用'定义字符串
- 如果字符串内部需要使用',可以使用"定义字符串
- 虽然可以使用"或者'做字符串的转义,但是在实际开发中:
- 可以使用索引获取一个字符串中指定位置的字符,索引计数从0开始
- 也可以使用for循环遍历字符串中每一个字符
大多数编程语言都是用"来定义字符串
string="HelloPython" forcinstring: print(c)
4.2字符串的常用操作
在ipython3中定义一个字符串,例如:hello_str=“”
- 输入hello_str.按下TAB键,ipython会提示字符串能够使用的方法如下:
In[1]:hello_str. hello_str.capitalizehello_str.isidentifierhello_str.rindex hello_str.casefoldhello_str.islowerhello_str.rjust hello_str.centerhello_str.isnumerichello_str.rpartition hello_str.counthello_str.isprintablehello_str.rsplit hello_str.encodehello_str.isspacehello_str.rstrip hello_str.endswithhello_str.istitlehello_str.split hello_str.expandtabshello_str.isupperhello_str.splitlines hello_str.findhello_str.joinhello_str.startswith hello_str.formathello_str.ljusthello_str.strip hello_str.format_maphello_str.lowerhello_str.swapcase hello_str.indexhello_str.lstriphello_str.title hello_str.isalnumhello_str.maketranshello_str.translate hello_str.isalphahello_str.partitionhello_str.upper hello_str.isdecimalhello_str.replacehello_str.zfill hello_str.isdigithello_str.rfind
提示:正是因为python内置提供的方法足够多,才使得在开发时,能够针对字符串进行更加灵活的操作!应对更多的开发需求!
- 判断类型-9
- 查找和替换-7
- 大小写转换-5
- 文本对齐-3
- 去除空白字符-3
- 拆分和连接-5
4.3字符串的切片
切片方法适用于字符串、列表、元组
- 切片使用索引值来限定范围,从一个大的字符串中切出小的字符串
- 列表和元组都是有序的集合,都能够通过索引值获取到对应的数据
- 字典是一个无序的集合,是使用键值对保存数据
字符串[开始索引:结束索引:步长]
注意:
- 指定的区间属于左闭右开型[开始索引,结束索引)=>开始索引>=范围<结束索引
- 从起始位开始,到结束位的前一位结束(不包含结束位本身)
- 从头开始,开始索引数字可以省略,冒号不能省略
- 到末尾结束,结束索引数字可以省略,冒号不能省略
- 步长默认为1,如果连续切片,数字和冒号都可以省略
索引的顺序和倒序
- 在Python中不仅支持顺序索引,同时还支持倒序索引
- 所谓倒序索引就是从右向左计算索引
- 最右边的索引值是-1,依次递减
演练需求
-
- 截取从2~5位置的字符串
-
- 截取从2~末尾的字符串
-
- 截取从开始~5位置的字符串
-
- 截取完整的字符串
-
- 从开始位置,每隔一个字符截取字符串
-
- 从索引1开始,每隔一个取一个
-
- 截取从2~末尾-1的字符串
-
- 截取字符串末尾两个字符
-
- 字符串的逆序(面试题)
答案
num_str="0123456789" #1.截取从2~5位置的字符串 print(num_str[2:6]) #2.截取从2~`末尾`的字符串 print(num_str[2:]) #3.截取从`开始`~5位置的字符串 print(num_str[:6]) #4.截取完整的字符串 print(num_str[:]) #5.从开始位置,每隔一个字符截取字符串 print(num_str[::2]) #6.从索引1开始,每隔一个取一个 print(num_str[1::2]) #倒序切片 #-1表示倒数第一个字符 print(num_str[-1]) #7.截取从2~`末尾-1`的字符串 print(num_str[2:-1]) #8.截取字符串末尾两个字符 print(num_str[-2:]) #9.字符串的逆序(面试题) print(num_str[::-1])
05.公共方法
5.1Python内置函数
Python包含了以下内置函数:
注意
- 字符串比较符合以下规则:“0”<“A”<“a”
5.2切片
- 切片使用索引值来限定范围,从一个大的字符串中切出小的字符串
- 列表和元组都是有序的集合,都能够通过索引值获取到对应的数据
- 字典是一个无序的集合,是使用键值对保存数据
5.3运算符
注意
- in在对字典操作时,判断的是字典的键
- in和notin被称为成员运算符
成员运算符
成员运算符用于测试序列中是否包含指定的成员
注意:在对字典操作时,判断的是字典的键
5.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="阿土" forstu_dictinstudents: print(stu_dict) #判断当前遍历的字典中姓名是否为find_name ifstu_dict["name"]==find_name: print("找到了") #如果已经找到,直接退出循环,就不需要再对后续的数据进行比较 break else: print("没有找到") print("循环结束")
关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。