python基础语法(下)—— python中的元组、集合、字典、类与异常的处理

news2024/12/27 15:43:25

文章目录

    • 8.python中的元组
      • 8.1元组的初始化
      • 8.2元组的解包
      • 8.3元组的比较运算
      • 8.4else
    • 9.python中的集合
      • 9.1集合的初始化
      • 9.2集合的常用操作
      • 9.3使用for循环遍历集合
    • 10.python中的字典
      • 10.1字典的初始化
      • 10.2字典的常见操作
      • 10.3使用for循环遍历字典
    • 11.python中的类
      • 11.1类的定义
      • 11.2类变量和实例变量
      • 11.3类的继承
    • 12.python中的异常处理

8.python中的元组

元组跟列表类似,只是 不支持动态添加、删除元素,以及不能修改元素。

8.1元组的初始化

元组需要用 小括号 括起来,中间的元素用逗号隔开。注意,如果初始化只包含一个元素的元组,需要在该元素后添加逗号。

a = () #初始化一个空的元组
b = (1, 2) #含有2个整数的元组
print(type(b)) #看一下b的类型,得到输出:<class 'tuple'>
c = (1,) #注意不能写成(1),(1)表示整数1
d = 6, "python", 3.14 #等价于(6,“python”,3.14)
e = 6 #等价于(6)
print(type(e)) #得到输出:<class 'int'>
print(a, b, c, d, e) #得到输出:() (1, 2) (1,) (6, 'python', 3.14) 6

8.2元组的解包

形如:

x = 6, "python", 3.14 #初始化一个元组
print(type(x)) #得到输出:<class 'tuple'>
a, b, c = x #解包操作
print(a, b, c) #输出结果:6 python 3.14

像平常我们同时给两个变量赋值,或者交换两个数,例如:a, b = b, a,都是元组解包的过程。还有,函数的返回值有多个的时候,本质上也是返回了一个元组 ,例如:

def fun(x, y):
    return x + y, x * y

print(fun(1, 2)) #输出结果:(3, 2),返回的也是元组

8.3元组的比较运算

元组和列表均支持比较运算符:==、!=、>、<、>=、<=等,按字典序进行比较。

8.4else

元组的下标访问元素、循环遍历、切片、加法和乘法运算等操作,都与列表相同。

9.python中的集合

集合是Python中最常用的数据结构之一,用来 存储不同元素。

注意,集合中的元素是无序的。

9.1集合的初始化

创建集合用花括号或set()函数。注意:创建空集合只能用set(),不能用{},因为{}创建的是空字典,会在下一小节里介绍字典。集合常见的初始化方式有:

plate = {"apple", "pear", "orange", "apple", "orange", "banana", "apple"} #初始化一个集合
print(plate) #输出结果:{'banana', 'apple', 'orange', 'pear'} 无序且去重
x = set() #初始化一个空的集合
print(x) #输出:set()
a = [1, 2, 2, 4, 4, 5]
b = set(a) #将列表转换成集合,一般是为了去重,
print(b) #输出:{1, 2, 4, 5}
c = list(b) #再将集合转换成列表,
print(c) #输出:{1, 2, 4, 5}

x = "abracadabrac"
a = set(x) #将x转换成集合去重
print(a) #输出:{'c', 'd', 'r', 'b', 'a'}
b = str(a) #将集合转换成字符串
print(b) #输出:{'c', 'd', 'r', 'b', 'a'}

9.2集合的常用操作

假设a表示一个集合。

  • len(a) 返回集合中包含的元素数量
  • a.add(x) 在集合中添加一个元素。
  • a.remove(x) 删除集合中的x,如果x不存在,则报异常。
  • a.discard(x) 删除集合中的x,如果x不存在,则不进行任何操作。
  • x in a 判断x是否在a中。
  • x not in a 判断x是否不在a中。

例如:

a = {1, 2, 3}
print(len(a)) #输出:4
a.add(4) 
print(a) #输出:{1, 2, 3, 4}
a.remove(4)
print(a) #输出:{1, 2, 3}
a.discard(3)
print(a) #输出:{1, 2}

9.3使用for循环遍历集合

类似于列表,集合也可以用for … in …的形式遍历。例如:

a = {1, 2, 3}
for i in a:
    print(i, end=' ')

10.python中的字典

相当于C++中的哈希表。字典是Python中最常用的数据结构之一,用来存储映射关系。 注意,字典中的元素是无序的。 不同于列表, 字典是以key进行索引的,可以将每个key映射到某个value。 key可以是任何不可变类型,常用可以作为key的类型有数字和字符串。列表因为是可变的,所以不能作为key。value可以是任意类型。

10.1字典的初始化

创建字典用花括号或dict()函数。

phone = {'jerry': 1596, 'tom': 1598}
print(phone) #输出:{'jerry': 1596, 'tom': 1598}

a = dict() #初始化一个空字典
a[1] = "apple"
a[2] = "banana"
a[3] = "orange"
print(a) #输出:{1: 'apple', 2: 'banana', 3: 'orange'}
b = list(a) #将字典转换成列表
print(b) #输出:[1, 2, 3]

10.2字典的常见操作

假设a表示一个字典。

  • len(a):返回字典中的元素对数。
  • a[x]:获取关键字x对应的值,如果x不存在,会报异常。
  • a.get(x):获取关键字x对应的值,如果x不存在,会返回None,不会报异常。
  • a.get(x, y):获取关键字x对应的值,如果x不存在,会返回默认值y,不会报异常。
  • a[x] = y:在字典中插入一对元素,如果关键字x已存在,则将它之前映射的值覆盖掉。
  • del a[x]:删除关键字x对应的元素对,如果x不存在,会报异常。
  • x in a:检查字典中是否存在关键字x。
  • x not in a:检查字典中是否不存在关键字x。
  • a.keys():返回字典的所有key。
  • a.values():返回字典的所有value。
  • a.items():返回字典的所有由key和value组成的元组。

例如:

a = {"apple": 1, "banana": 2, "cherry": 3}
print(len(a)) #输出:3
print(a["apple"]) #输出:1
print(a.get("cherry")) #输出:3
print(a.get("orange"), 2) #“orange‘不在,输出:None 2
a["apple"] = 6
print(a) #输出:{'apple': 6, 'banana': 2, 'cherry': 3}
del a["cherry"]
print(a) #输出:{'apple': 6, 'banana': 2}
print("banana" not in a) #输出:False
print(a.values()) #输出:dict_values([6, 2])
print(a.keys()) #输出:dict_keys(['apple', 'banana'])
print(a.items()) #输出:dict_items([('apple', 6), ('banana', 2)])

10.3使用for循环遍历字典

类似于列表,字典也可以用for … in …的形式遍历。例如:

a = {'abc': 1, 'def': 2, 'python': 3}  # 初始化一个字典

for k in a:  # 遍历key
    print(k, end=' ')
print()  # 输出:abc def python

for k in a.keys():  # 遍历key
    print(k, end=' ')
print()  # 输出:abc def python 

for v in a.values():  # 遍历value
    print(v, end=' ')
print()  # 输出:1 2 3 

for k, v in a.items():  # 遍历key-value对
    print("(%s, %d) " % (k, v), end=' ')
print()  # 输出:(abc, 1)  (def, 2)  (python, 3) 

11.python中的类

类似于C++中的类;类可以将变量、函数打包在一起,让代码在逻辑上更加清晰。
类名称一般采用驼峰命名法,函数一般采用下划线命名法。类中函数的第一个参数都是self(相当于C++中的this指针,只不过self不是指针,相当于解引用的操作),用来调用类本身的变量和函数。当调用类中函数的时候,第一个参数self不需要自己传递,Python会自动传递这个参数。

11.1类的定义

class Hero:
    hero_count = 0 #类变量

    def __init__(self, name, level=10): #构造函数
        self.name = name
        self.level = level
        print("Hero %s has been created" % name)
        Hero.hero_count += 1

    def __str__(self): #定义str函数
        return "Hero: %s " % self.name

    def greet(self):
        print("%s: Hi!" % self.name)

    def move(self):
        print("%s: move" % self.name)

    def get_level(self): #获得该英雄的等级
        return self.level

    def next_level(self):
        return self.get_level() + 1

zeus = Hero("Zeus")
athena = Hero("Athena")
zeus.greet()
athena.move()
print(zeus.name, athena.get_level(), athena.next_level())
print(str(zeus), athena.get_level(), athena)
print(Hero.hero_count)

在这里插入图片描述

11.2类变量和实例变量

每个类可以创建任意多实例。例如上面的Hero类,可以创建zeus和athena等实例。类变量由所有实例共享,一般通过类名访问,例如Hero.hero_count。实例变量与每个具体的实例绑定,一般通过具体实例来访问,例如zeus.name。

11.3类的继承

子类可以继承父类的变量和函数。self可以调用自身和父类中的变量和函数,super()可以调用父类中的函数。
如果子类和父类的变量或函数重名,优先使用子类的变量和函数。

class Hero:
    hero_count = 0 #类变量

    def __init__(self, name, level=10): #构造函数
        self.name = name
        self.level = level
        print("Hero %s has been created" % name)
        Hero.hero_count += 1

    def __str__(self): #定义str函数
        return "Hero: %s " % self.name

    def greet(self): #问候
        print("%s: Hi!" % self.name)

    def move(self): #移动
        print("%s: move" % self.name)

    def get_level(self): #获得该英雄的等级
        return self.level

    def next_level(self):
        return self.get_level() + 1

class Zeus(Hero): #继承了Hero这个类
    hero_name = "Zeus"

    def __init__(self, level):
        super().__init__(Zeus.hero_name, level) #通过super()调用父类的构造函数

    def greet(self):
        print("%s: Hi!(from child class)" % self.name) #调用父类的name

class Athena(Hero): #继承了Hero这个类
    hero_name = "Athena"

    def __init__(self, level):
        super().__init__(Athena.hero_name, level) #通过super()调用父类的构造函数

    def greet(self):
        print("%s: Hi!(from child class)" % self.name) #使用的是父类的name

zeus = Zeus(6)
athena = Athena(8)
print(zeus.name, athena.name, Hero.hero_count)
zeus.greet()
athena.greet()
print(zeus.name, athena.name)

在这里插入图片描述

12.python中的异常处理

当某段代码出现异常时,代码会被终止。此时如果不想让代码终止,可以用try … except … 语句来处理异常。

例如,将字符串转化成整数时,可能会出现异常:

s = input()

try:
    x = int(s)
    print(x)
except Exception as e:
    print(e)

print("Finished!")

当除以0时,也会出现异常:

x, y = map(int, input().split())

try:
    z = x / y
    print(z)
except Exception as e:
    print(e)

print("Finished!")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1400689.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二进制部署高可用k8s集群V1.20.11版本

文章目录 一、操作系统初始化配置&#xff08;所有节点均执行&#xff09;1、关闭防火墙2、关闭selinux3、关闭swap4、根据规划修改主机名5、在master节点上添加host6、将桥接的IPv4流量传递到iptables的链7、时间同步 二、部署Etcd集群1、准备cfssl证书生成工具2、生成Etcd证书…

B(l)utter:一款针对Flutter移动端应用程序的逆向工程分析工具

关于B(l)utter B(l)utter是一款针对Flutter移动端应用程序的逆向工程分析工具&#xff0c;当前版本的B(l)utter仅支持Android libapp.so&#xff08;ARM64&#xff09;&#xff0c;可以帮助广大研究人员对基于Flutter开发的移动端应用程序进行逆向工程分析。 环境搭建 该应用…

C++参悟:正则表达式库regex

正则表达式库regex 一、概述二、快速上手Demo1. 查找字符串2. 匹配字符串3. 替换字符串 三、类关系梳理1. 主类1. basic_regex 2. 算法1. regex_match2. regex_search3. regex_replace 3. 迭代器4. 异常5. 特征6. 常量1. syntax_option_type2. match_flag_type3. error_type 一…

6.3.5编辑视频

6.3.5编辑视频 除了上面的功能外&#xff0c;Camtasia4还能进行简单的视频编辑工作&#xff0c;如媒体的剪辑、连接、画中画等。 下面我们就利用Camtasia4的强大功能来实现一个画中画效果&#xff0c;在具体操作之前&#xff0c;需要准备好两个视频文件&#xff0c;一个作为主…

C++:练习:类的一些简单例题(学习编程的前期需要大量的读和写基本C++代码)

2014年1月21日 内容整理自《程序设计教程&#xff1a;用C语言编程 第三版》 陈家骏 郑滔 --------------------------------------------------------------------------------------------------------------------------------- 例题1&#xff1a;用类来实现“栈”这一数…

(二十三)Kubernetes系列之prometheus+grafana安装

1.kube-prometheus安装 1.1 下载 访问地址&#xff1a;https://github.com/prometheus-operator/kube-prometheus/releases 点击Source code (tar.gz)进行下载&#xff0c;并上传到k8s服务器master节点 1.2解压 tar zxvf kube-prometheus-0.11.0.tar.gz 1.3进入kube-prome…

2024年黑龙江事业单位招聘报名详细流程图解,千万不要错过报名哦

⭐报名入口&#xff1a;入黑龙江省事业单位公开招聘服务平台 ✅报名时间&#xff1a;2024年1月22日9:00-1月26日17:00 ✅笔试联考&#xff1a;2024年3月30日 报名流程如下&#xff0c;具体可查看笔记详细图解 第一步&#xff0c;注册及登录&#xff0c;新用户注册新账号。 第二…

【数据结构】单链表的基本操作 (C语言版)

目录 一、单链表 1、单链表的定义&#xff1a; 2、单链表的优缺点&#xff1a; 二、单链表的基本操作算法&#xff08;C语言&#xff09; 1、宏定义 2、创建结构体 3、初始化 4、插入 4、求长度 5、清空 6、销毁 7、取值 8、查找 9、删除 10、头插法创建单链表…

Centos使用Docker搭建自己的Gitlab(社区版和设置汉化、修改密码、设置SSH秘钥、添加拉取命令端口号)

根据我的经验 部署Gitlab&#xff08;社区版&#xff09; 至少需要2核4g的服务器 带宽3~4M 1. 在自己电脑上安装终端&#xff1a;宝塔ssl终端 或者 FinalShell&#xff0c;根据喜好安装即可 http://www.hostbuf.com/t/988.html http://www.hostbuf.com/downloads/finalshell_w…

xshell配置隧道转移规则

钢铁知识库&#xff0c;一个学习python爬虫、数据分析的知识库。人生苦短&#xff0c;快用python。 xshell是什么 通俗点说就是一款强大ssh远程软件&#xff0c;可以方便运维人员对服务器进行管理操作&#xff0c;功能很多朋友们自行探索&#xff0c;今天只聊其中一个功能点那…

中仕教育:研究生毕业可以考选调生吗?

选调生的报考条件之一是应届生&#xff0c;研究生毕业也属于应届生&#xff0c;所以是可以报考的。 选调生不同学历的年龄限制&#xff1a; 1.应届本科生&#xff1a;年龄在25岁以内 2.应届研究生&#xff1a;年龄在30岁以内 3.应届博士生&#xff1a;年龄在35岁以内 研究…

如何为不同品牌的笔记本电脑设置充电限制,这里提供详细步骤

笔记本电脑的电池健康状况至关重要。延长电池寿命可以帮你省下不少钱。对于长时间充电的Windows 11笔记本电脑用户来说,将电池电量限制在80%是很重要的。 虽然操作系统没有提供设置自定义电池充电限制的内置方法,但仍有一些方法可以在Windows 11中配置电池设置,并将其限制在…

kafka(一)——简介

简介 Kafka 是一种分布式、支持分区、多副本的消息中间件&#xff0c;支持发布-订阅模式&#xff0c;多用于实时处理大量数据缓存的场景&#xff0c;类似于一个“缓存池”。 架构 Producer&#xff1a;消息生产者&#xff1b;Consumer&#xff1a;消息消费者&#xff1b;Brok…

6. Spring Boot的starters

6. Spring Boot的starters(重要) 一般认为&#xff0c;SpringBoot 微框架从两个主要层面影响 Spring 社区的开发者们&#xff1a; 基于 Spring 框架的“约定优先于配置&#xff08;COC&#xff09;”理念以及最佳实践之路。提供了针对日常企业应用研发各种场景的 spring-boot…

人工智能原理实验2(2)——罗马尼亚问题(贪婪搜索、A*搜索、BFS、DFS)

&#x1f9e1;&#x1f9e1;实验内容&#x1f9e1;&#x1f9e1; 根据上图以Zerind为初始状态&#xff0c;Bucharest为目标状态实现搜索&#xff0c;分别以贪婪搜索&#xff08;只考虑直线距离&#xff09;和A算法求解最短路径。 按顺序列出贪婪算法探索的扩展节点和其估价函数…

读书笔记-《数据结构与算法》-摘要8[桶排序]

桶排序和归并排序有那么点点类似&#xff0c;也使用了归并的思想。大致步骤如下&#xff1a; 设置一个定量的数组当作空桶。Divide - 从待排序数组中取出元素&#xff0c;将元素按照一定的规则塞进对应的桶子去。对每个非空桶进行排序&#xff0c;通常可在塞元素入桶时进行插入…

springboot113健身房管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的健身房管理系统 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取…

文件操作和IO(1)

认识文件 先来认识狭义上的文件(存储在硬盘(磁盘)上).针对硬盘这种持久化的I/O设备,当我们想要进行数据保存时,往往不是保存成一个整体,而是独立成一个个的单位进行保存,这个独立的单位就被抽象成文件的概念,就类似办公桌上的一份份真实的文件一般. 注意:硬盘 ! 磁盘 磁盘属于…

【算法与数据结构】1049、LeetCode 最后一块石头的重量 II

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;本题需要得到石头之间两两粉碎之后的最小值&#xff0c;那么一个简单的思路就是将这堆石头划分成大小相…

HDFS节点故障的容错方案

HDFS节点故障的容错方案 1. NN高可用1.1 选主逻辑1.2 HA切换1.3 注意点1.3.1 fencing的处理1.3.2 健康状态的定义1.3.3 确保zk中的父节点存在1.3.4 确保NN的ID与IP保持一致 2. DN高可用2.1 感知DN节点异常2.1.1 NN感知DN心跳超时2.1.1 客户端链接DN异常 2.2 异常DN上的数据处理…