【Python】—— 公共的方法

news2024/12/23 9:41:54

目录

(一)公共操作

1.1 公共操作之运算符加号

1.2 公共操作之运算符乘号

1.3 公共操作之运算符判断数据是否存在

 (二)公共方法 

2.1 公共方法-len

2.2 公共方法-del

2.3 公共方法-max和min

2.4 公共方法-range

2.5 公共方法-enumerate


首先,对于Python一些公共操作大致如下图所示:

(一)公共操作

1.1 公共操作之运算符加号

在 Python 中,+ 号运算符主要用于执行加法操作,但其用途并不止于此。

数值加法

  • 这是 + 运算符最常见的用途。当两个数字相加时,它返回它们的和。
res = 1 + 2  # res 的值为 3

 字符串连接

  • 当 + 运算符用于字符串时,它会将两个字符串连接在一起。
message = "Hello, " + "world"  # message 的值为 "Hello, world"

列表连接

  • 对于列表,+ 运算符通常不能用来直接连接它们,因为列表没有定义 __add__ 方法来支持这种操作;
  • 但是,你可以使用 extend() 方法来将一个列表的内容添加到另一个列表的末尾,或者使用列表推导式(list comprehension)和 + 运算符来合并两个列表。 
list1 = [1, 2, 3]  
list2 = [4, 5, 6]  
list1.extend(list2)  # list1 现在是 [1, 2, 3, 4, 5, 6]  

# 或者使用列表推导式  
list3 = list1 + list2  # list3 是 [1, 2, 3, 4, 5, 6, 4, 5, 6]
  • 注意,在上面的列表推导式中,list3 是 list1 和 list2 的内容合并而成的,而不是简单的连接。 

 元组连接

  • 和列表一样,元组也不能直接用 + 运算符连接,因为元组也没有定义 __add__ 方法。但你可以使用 + 运算符和元组字面量来创建新的元组。
tuple1 = (1, 2, 3)  
tuple2 = (4, 5, 6)  
tuple3 = tuple1 + tuple2  # tuple3 是 (1, 2, 3, 4, 5, 6)

1.2 公共操作之运算符乘号

在Python中,*号运算符有多种用途,主要包括数值乘法、字符串和列表的重复、以及函数定义中的参数解包等

数值乘法

  • *运算符在数值上用于乘法操作。
res = 2 * 3  # res 的值为 6

字符串重复

  • *运算符用于字符串时,它可以将字符串重复指定的次数。 
str = "H"  
new_str= str * 3  # new_str的值为 "HHH"

列表重复

  • 与字符串类似,*运算符也可以用于列表,将列表重复指定的次数。 
lst = [1, 2, 3]  
new_list= lst * 3  # new_list的值为 [1, 2, 3, 1, 2, 3, 1, 2, 3]

 元祖重复

  • 与字符串类似,*运算符也可以用于元祖,将元祖重复指定的次数。 
tuple1 = (1, 2)  
tuple2 = tuple1 * 3  # tuple2 是 (1, 2, 1, 2, 1, 2)

1.3 公共操作之运算符判断数据是否存在

在Python中,我们通常不直接使用运算符来判断数据是否存在,而是使用特定的数据结构和方法来检查数据是否存在于某个集合或列表中。但是,如果你想要通过某种条件判断(例如,使用比较运算符来检查一个值是否在某个范围内),那么你可以使用条件语句(如if)。

然而,对于检查一个元素是否存在于一个集合(set)、列表(list)或字典(dict)中,我们通常会使用以下方法:

  • 列表: 使用in关键字。

list = [1, 2, 3, 4, 5]  
if 3 in list :  
    print("3 exists in the list.")  
else:  
    print("3 does not exist in the list.")

或者如下:

list = [1, 2, 3, 4, 5]  

print(1 in list)  # True
print(7 in list)  # False
  • 字典: 使用键(key)来检查。

dict = {'a': 1, 'b': 2, 'c': 3}  
if 'a' in dict :  
    print("'a' exists in the dictionary.")  
else:  
    print("'a' does not exist in the dictionary.")

 (二)公共方法 

在Python中,公共方法(或通常所说的方法)是类定义的函数,它们可以在类的实例上被调用。公共方法通常用于封装与对象状态相关的操作。

2.1 公共方法-len

len是一个内置函数(不是类的方法),用于返回对象的长度或项目数。这个函数是“公共”的,因为它可以在任何Python代码中使用,无需特定的类或模块导入。

  • len 函数可以接受多种类型的参数,包括字符串、列表、元组、字典、集合等,并返回它们包含的元素数量。

字符串

str = "hello"  
print(len(str))  # 输出: 5

列表

lst = [1, 2, 3, 4, 5]  
print(len(lst))  # 输出: 5

元组

tup = (1, 2, 3)  
print(len(tup))  # 输出: 3

字典

dict = {'a': 1, 'b': 2, 'c': 3}  
print(len(dict))  # 输出: 3

集合

num = {1, 2, 3, 2, 3, 4}  # 注意:集合中的重复元素会被自动去重  
print(len(num))  # 输出: 4

2.2 公共方法-del

在Python中,del是一个内建操作,用于删除对象(比如变量、列表元素、字典项等)。虽然它不是一个“方法”(method),但它确实是一种用于对象管理的公共机制。

使用del删除变量

x = 10  
print(x)  # 输出: 10  
del x  
# 尝试打印x将引发NameError,因为x已经被删除了  
print(x)  # NameError: name 'x' is not defined

使用del删除列表元素

lst = [1, 2, 3, 4, 5]  
print(lst)  # 输出: [1, 2, 3, 4, 5]  
del lst[2]  # 删除索引为2的元素(即数字3)  
print(lst)  # 输出: [1, 2, 4, 5]

使用del删除切片

lst = [1, 2, 3, 4, 5]  
print(lst)  # 输出: [1, 2, 3, 4, 5]  
del lst[1:3]  # 删除索引从1到2(不包括3)的元素  
print(lst)  # 输出: [1, 4, 5]

使用del删除字典项

dict = {'a': 1, 'b': 2, 'c': 3}  
print(dict)  # 输出: {'a': 1, 'b': 2, 'c': 3}  

del dict ['b']  # 删除键为'b'的项  
print(dict)  # 输出: {'a': 1, 'c': 3}

2.3 公共方法-max和min

在Python中,max()min()是两个常用的内置函数,也称为公共方法,因为它们可以用于多种数据类型,如列表、元组、字典(仅当比较键时)和字符串等。这些函数用于返回给定可迭代对象(如列表或元组)中的最大或最小值。

  • 对于数值列表:

numbers = [1, 3, 5, 7, 9]  
max_value = max(numbers)  # 返回 9  
min_value = min(numbers)  # 返回 1
  • 对于字符串列表(比较字符串的字典序):

words = ['apple', 'banana', 'cherry']  
max_word = max(words)  # 返回 'cherry'  
min_word = min(words)  # 返回 'apple'
  • 使用key参数:如果你想要基于某个特定属性或函数的结果来找到最大或最小值,你可以使用key参数。例如,如果你有一个包含字典的列表,并且你想要基于字典中的某个值来找到具有最大或最小该值的字典,可以这样做:

dicts = [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 30}, {'name': 'Charlie', 'age': 20}]  

oldest = max(dicts, key=lambda d: d['age'])  # 返回 {'name': 'Bob', 'age': 30}  
youngest = min(dicts, key=lambda d: d['age'])  # 返回 {'name': 'Charlie', 'age': 20}
  • default参数:当可迭代对象为空时,max()min()函数会抛出ValueError。但是,你可以使用default参数来提供一个默认值,以避免这种情况:

empty_list = []  
max_value = max(empty_list, default=0)  # 返回 0,而不是抛出异常
  • 注意:当使用max()min()函数与字典一起时,它们默认比较字典的键(key),而不是值(value)。如果你想要基于值来比较字典,你需要使用key参数来指定一个函数,该函数返回你想要比较的值。


2.4 公共方法-range

range()函数的主要用途是在for循环中迭代数字序列,而无需手动创建这些数字。它也可以用于生成用于列表推导式、集合推导式或其他需要数字序列的场合。

range()函数的基本定义是接受一个、两个或三个参数,并返回一个序列的数字。这些参数分别是:

  1. start(可选,默认为0):序列的起始值。
  2. stop(必需):序列的结束值(不包括此值)。
  3. step(可选,默认为1):序列中每个数字之间的增量。

特点

  • range()函数生成的序列是不可变的。
  • range()函数返回的是一个范围对象(range object),它是一个迭代器(iterator),可以节省内存。
  • range()函数生成的数字序列不包括stop参数指定的值。

示例1:基本用法

for i in range(5):  # 相当于 for i in [0, 1, 2, 3, 4]  
    print(i)

示例2:指定起始值和结束值 

for i in range(2, 7):  # 相当于 for i in [2, 3, 4, 5, 6]  
    print(i)

示例3:指定起始值、结束值和步长 

for i in range(1, 10, 2):  # 相当于 for i in [1, 3, 5, 7, 9]  
    print(i)

示例4:用于列表推导式 

squares = [i**2 for i in range(5)]  # 生成 [0, 1, 4, 9, 16]  
print(squares)

示例5:查看range()对象的属性 

  • 尽管range()对象通常用于迭代,但你也可以查看它的startstopstep属性(注意这些属性在Python 3中是可以访问的,但在Python 2中range()返回的是一个列表,没有这些属性)。
r = range(2, 7, 2)  
print(r.start)  # 输出 2  
print(r.stop)   # 输出 7  
print(r.step)   # 输出 2

2.5 公共方法-enumerate

enumerate 函数接受一个可迭代对象(如列表、元组或字符串)和一个可选的start 索引值(默认为0)作为输入,并返回一个枚举对象。这个枚举对象是一个迭代器,它生成元组,每个元组包含两个元素:一个是原始数据对象的索引(从 start 开始),另一个是该索引处的值。

特点

  • enumerate() 函数返回一个枚举对象,该对象是一个迭代器,支持在循环中迭代。
  • 枚举对象生成的元组包含两个元素:索引和值。
  • 索引值可以从指定的 start 值开始(默认为0)。

示例1:基本用法 

fruits= ['apple', 'banana', 'watermelon', 'pear']  
for index, fruit in enumerate(fruits):  
    print(f'Index {index}: {fruit}')  
  
# 输出:  
# Index 0: apple
# Index 1: banana
# Index 2: watermelon
# Index 3: pear

示例2:指定起始索引

fruits= ['apple', 'banana', 'watermelon', 'pear']  
for index, fruit in enumerate(fruits, start=1):  
    print(f'Index {index}: {fruit}')  
  
# 输出:  
# Index 0: apple
# Index 1: banana
# Index 2: watermelon
# Index 3: pear

示例3:在字符串上使用

str = 'hello'  
for index, char in enumerate(str):  
    print(f'Character at index {index}: {char}')  
  
# 输出:  
# Character at index 0: h  
# Character at index 1: e  
# Character at index 2: l  
# Character at index 3: l  
# Character at index 4: o

以上就是本期关于公共的方法的全部知识小结!!!

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

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

相关文章

如果 SEC 批准以太坊现货 ETF,会有更多山寨币 ETF 吗?

撰文:Protos 编译:Ismay,BlockBeats 文章来源香港Web3媒体Techun News 编者按:SEC 已与交易平台和 ETF 申请人就 19b-4 规则变更请求进行沟通,这表明以太坊现货 ETF 获批的可能性大大增加。与此同时山寨币投资者猜测…

嵌入式开发中树莓派和单片机关键区别

综合了几篇帖子作以信息收录:树莓派和单片机作为嵌入式系统领域中两种广泛使用的设备,各自有着不同的特性和应用场景,文章从五个方面进行比对展开。 架构与性能: 树莓派:是一款微型计算机,通常配备基于AR…

解决 git:OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0

解决 git:OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0 问题 git pull报错:fatal: unable to access ‘https://github.com/aircrushin/ultrav-music.git/’: Failed to connect to github.com port 443 after 21077 ms: Couldn’t connect to serve…

成本管控:如何利用 SOLIDWORKS Costing 高效估算成本?

现在全球材料短缺、生活成本上升以及能源价格上涨而导致的成本上升问题突显。 生产产品需要的成本以及如何让产品的成本下降就成为很多的企业越来越关注的问题。 SOLIDWORKS Costing是集成到 SOLIDWORKS Professional 和 Premium 中的一款允许用户和制造商估算产品生产成本的工…

Java 多线程抢红包

问题需求 一个人在群里发了1个100元的红包,被分成了8个,群里有10个人一起来抢红包,有抢到的金额随机分配。 红包功能需要满足哪些具体规则呢? 1、被分的人数抢到的金额之和要等于红包金额,不能多也不能少。 2、每个人至少抢到1元…

A股翻车现场

英伟达业绩炸裂,但今天A股这边不仅没喝着汤,还再度上演大型翻车现场,人家不仅股价大涨7个点还站上1000美元大关, 而咱A股里的英伟达,AI,TMT相关概念股,包括工业(富联)&am…

Redis常见数据类型(4) - hash, List

hash 命令小结 命令执行效果时间复杂度hset key field value设置值O(1)hget key field获取值O(1)hdel key field [field...]删除值O(k), k是field个数hlen key计算field个数O(1)hgetall key获取所有的field-valueO(k), k是field的个数hmget field [field...]批量获取field-va…

springboot+jsp校园理发店美容美发店信息管理系统0h29g

前台管理:会员管理、会员预定、开单点单、收银结帐、技师提成 后台管理:数据维护、物料管理、数据查询、报表分析、系统设置等 灵活的付款方式,支持现金、挂帐、会员卡,同时支持多种折扣方式并可按用户要求设置多种结帐类型善的充值卡管理模块:支持优惠卡…

重谈端口号(五元组标识通信),netstat命令介绍

目录 重谈端口号 引入 介绍 知名端口 查看 netstat 引入 介绍 第一列 其他列 选项 重谈端口号 引入 我们已经介绍了很多关于网络协议/网络相关知识了,这里,我们重新回过头再来看看端口号 之前介绍端口号的博客 -- 网络通信另个角度的认识(进程间通信),端口号(为什么…

ctfshow web 萌新赛

给他 谐音.git 用githack还原文件 <?php $passsprintf("and pass%s",addslashes($_GET[pass])); $sqlsprintf("select * from user where name%s $pass",addslashes($_GET[name])); ?>用addslashes函数进行转义 它会在以下字符前添加反斜杠&am…

【施磊】C++语言基础提高:深入学习C++语言先要练好的内功

课程总目录 文章目录 一、进程的虚拟地址空间内存划分和布局二、函数的调用堆栈详细过程三、程序编译链接原理1. 编译过程2. 链接过程 一、进程的虚拟地址空间内存划分和布局 任何的编程语言 → \to → 产生两种东西&#xff1a;指令和数据 编译链接完成之后会产生一个可执行…

【笔记】软件架构师要点记录(2)

【笔记】软件架构师要点记录 20240523案例一案例二案例三案例四案例五案例六案例七案例十 20240523 基于前10个架构案例场景&#xff0c;对用到的专业术语进行整理&#xff0c;方便后续查看。 案例一 MVC架构风格组件交互方式 MVC是一种用来构建用户界面时采用的架构设计风格…

SpringBoot中使用AOP实现日志记录功能

目录 一、SpringBoot框架介绍 二、什么是 AOP 三、日志记录的必要性 四、SpringBoot中如何使用AOP实现日志记录功能 一、SpringBoot框架介绍 SpringBoot是一个开源的Java开发框架&#xff0c;旨在简化基于Spring框架的应用程序的开发。它提供了一套开箱即用的工具&#xf…

企业知识库智能问答系统的实践

1、页面效果 PC端 2、页面效果 手机端 3、主要支持功能 新建会话 历史会话 2、智能问答 支持 文本分类和意图识别&#xff0c;支持基于大模型的对话理解&#xff0c;支持流式对话 3、支持手机端 语音识别 4、主要服务包括 向量库Milvus 向量计算和文本分类服务 …

吃透一道题day2:Java算法中的“如何找到给定字符串中的不同字符“

写在开头&#xff1a;很久没有开启有关算法的内容了,在正式开启开启今天这段算法之旅之前,跟大家谈一谈上周五歌手也就是第二期我的一些直观感受:相比第一期(chante moore的if i aint got you和faouzia的crazy带给我的经验)没有任何特别的惊艳之处,很平淡甚至可以说是心如止水,…

使用docker+jenkins构建前端项目发布到nginx

1.准备环境 为了方便公司开发优化代码&#xff0c;不需要反复地将项目包发送给运维部署&#xff0c;我们对开发环境的前端项目利用jenkinsCI/CD进行自动化部署 需要两台服务器 一台jenkins 一台发布服务器,这里发布服务器 我直接使用开发环境的服务器 将admin界面与云计算展示…

优化电源设计:反激二极管选择与注意事项

反激二极管也被称为续流二极管、缓冲二极管、抑制二极管、钳位二极管或换向二极管&#xff0c;是一种电子元件&#xff0c;通常应用在开关电源和其他涉及电感性负载的电路中。它的主要功能是保护电路&#xff0c;防止感性负载在开关断开时产生的反激电压&#xff08;或反电动势…

Paddle 傅里叶变换基础及领域应用

Paddle 傅里叶变换基础及领域应用 1. 傅里叶变换基础 1.1 傅里叶变换简介 傅里叶变换是一种重要的信号处理技术&#xff0c;它可以将一个信号从时域转换到频域。在频域中&#xff0c;信号的频率特性更加明显&#xff0c;有利于分析和处理。傅里叶变换的基本思想是将一个信号…

P6【知识点】【数据结构】【树tree】C++版

树是由一个集合以及在该集合上定义的一种关系构成的&#xff0c;集合中的元素称为树的结点&#xff0c;所定义的关系称为父子关系。父子关系在树的结点之间建立了一个层次结构&#xff0c;在这种层次结构中有一个结点具有特殊的地位&#xff0c;这个结点称为该树的根结点。 二叉…

接口测试怎么测?为什么要做接口测试?

一、前言 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间及内部各个子系统之间的交互点。测试的重点是检查数据的交换、传递和控制管理过程&#xff0c;以及系统间的逻辑依赖关系等。 简单地说&#xff0c;接口测试就是通过URL向服务器或者…