【Python学习笔记】对象、方法
1. 对象方法定义
对象通常都拥有属于自己的 方法(英文叫 method )。
对象的方法其实可以看成是对象所拥有的函数。也就是说 这个方法,是属于这个对象的函数。
调用对象的方法,和调用函数差不多,只要在前面加上 所属对象 和 一个点
比如:
# var1 是一个列表对象
var1 = [1,2,3,4,5,6,7]# 列表对象都有 reverse方法
var1.reverse()
print(var1)
这里, reverse就是列表对象的一个方法,该方法将列表元素倒过来。
var1.reverse() 语句就会将列表变量var1 里面的元素倒过来存放。
运行结果就是 var1就变成了 [7, 6, 5, 4, 3, 2, 1]
- 对象的方法是和这个对象 类型 紧密相关的。
- 对象是什么类型,就决定了对象有哪些方法。
- 字符串有字符串的方法,列表有列表的方法,元组有元组的方法。
2. 字符串的方法
count
count 方法可以返回字符串对象包含了多少个参数指定的字符串
'我们今天不去上学,我们去踢足球'.count('我们') # 返回值 2
find
find 方法 会在字符串中查找参数子字符串,并返回该 参数字符串 在其中 第一个出现的位置索引
str1 = '我们今天不去上学,我们去踢足球'
pos1 = str1.find('我们') # find返回的是第一个 '我们' 的索引 0
如果字符串对象里面 没有 要查找的参数字符串,就会返回 -1
find 方法的第二个参数,用来指定查找字符串范围,比如
str1 = '我们今天不去上学,我们去踢足球'# 第2个参数 5, 表示从 索引 5 的位置开始往后查找
pos1 = str1.find('我们',5) # 返回的是后面 “我们”的索引 9
split
split 是我们常用的方法,经常用来从字符串中 截取 出我们想要的信息。
split 方法以参数字符串为分割符 ,将字符串 切割为多个 字符串,作为元素存入一个列表,并返回这个列表。
看看下面的例子
str1 = '小张:79 | 小李:88 | 小赵:83'
print(str1)
pos1 = str1.split('|')
# 运行结果
$ python main.py
小张:79 | 小李:88 | 小赵:83
['小张:79 ', ' 小李:88 ', ' 小赵:83']
这里 split方法指定用 | 作为源字符串str1的分割符, 这样原来的字符串 就被分成了 3个部分
最后将这个三个字符串存入一个列表中返回。
注意,分隔符本身在切割后,会被丢弃掉,所以切割后的字符串中不会有分隔符。
原来的字符串,被切开后,分隔符前面有的空格字符,会保留下来。
小张 前面没有空格,所以切割后,切割出来的结果就没有空格。
而 小李 和 小赵 前面是有空格的,切割出来的结果就有空格
不一定非要用 竖线分割, 我们可以指定任何其他的分隔符来分割字符串,比如
'小张:79 | 小李:88 | 小赵:83'.split('小赵')
这样就是以 小赵 这个字符串为界 ,分割。返回结果如下
['小张:79 | 小李:88 | ',':83'
]
splitlines
字符串对象还有一个 splitlines 方法也比较常用,就是把字符串 按换行符 进行切割,比如
salary = '''
小王 10000元
小李 20000元
小徐 15000元
'''print(salary.splitlines())
结果输出为
['', '小王 10000元', '小李 20000元', '小徐 15000元']
这样每行内容作为列表的一个元素。
splitlines 方法经常用在文件处理中,读出文件内容存入字符串,然后调用字符串的 splitlines方法,把每行内容依次存入列表。
随后循环遍历列表,就可以逐行分析文件内容了。
join
join 方法和 split方法正好相反
join 是将列表中的字符串元素以某字符串为连接符, 连接 为一个字符串
比如
'|'.join(['小张:79 ',' 小李:88 ',' 小赵:83'
])
返回的就是字符串 小张:79 | 小李:88 | 小赵:83 。
相当于把参数列表里面的字符串连接在一起, 中间加上指定的连接符 |
strip 、 lstrip 、 rstrip
strip方法可以将 字符串前面和后面的空格删除,但是不会删除字符串中间的空格
比如
' 小 李:88 '.strip()
# 返回的就是 '小 李:88',去掉了前后的空格,但是中间的空格不会去掉
lstrip方法 将 字符串前面 (左边) 的空格删除,但是不会删除字符串中间和右边的空格
比如
' 小 李:88 '.lstrip()
# 返回的就是 '小 李:88 '
rstrip方法 将 字符串后面 (右边) 的空格删除,但是不会删除字符串中间和左边的空格
比如
' 小 李:88 '.rstrip()
返回的就是 ' 小 李:88'
replace
replace 也是常用的方法,用来 替换 字符串里面 所有指定的子字符串为另一个字符串
比如
str1 = '我们今天不去上学,我们去踢足球'
str1 = str1.replace('我们', '他们')
上面的replace方法就会把字符串中所有的我们,替换成他们
结果就是 '他们今天不去上学,他们踢足球'
startswith 和 endswith
startswith 方法检查字符串是否以参数指定的字符串 开头,如果是,返回True,否则返回False
endswith 方法检查字符串是否以指定的字符串 结尾,如果是,返回True,否则返回False
str1 = '我们今天不去上学,我们去踢足球'
str1.startswith('我们') # 返回 True
str1.endswith('我们') # 返回 False
isdigit
isdigit 方法检查字符串是否全部由数字构成,如果是,返回True,否则返回False
比如,可以通过 isdigit 判断用户输入的电话号码是否全部是数字字符
str1 = input('请输入手机号码:')
if not str1.isdigit(): # 不是全部由数字字符构成print('您输入的手机号码不正确,必须全部是数字')
字符串的倒序
要得到一个字符串的 倒序字符串,只需要使用切片操作 [::-1]
:: 表示切片字符串的从头到尾,也就是全部内容, 而 步长 为 -1 表示,颠倒过来取元素
如下,
str1 = '123456789'
reverse = str1[::-1]
print(str1)
print(reverse)
# 运行结果
$ python main.py
123456789
987654321
3. 列表的方法
append
在列表的后面添加一个元素。
比如
a = [1, 2, 3.14, 'hello']
# append 之后,a就变成了 [1, 2, 3.14, 'hello', '你好']
a.append('你好')
print(a)# 继续append ,a就变成了 [1, 2, 3.14, 'hello', '你好', [7,8]]
a.append([7,8])
print(a)
注意,append 方法的返回值是 None,而不是新的列表对象。
insert
如果我们 不是要在后面 添加一个元素, 而是在 指定位置插入一个元素,就可以使用insert方法
比如
a = [1, 2, 3.14, 'python'] # 插入到索引0的位置,也是插到第1个元素的位置上
# a列表内容就变成了 ['你好', 1, 2, 3.14, 'python']
a.insert(0, '你好')
print(a)# 插入到索引2的位置,也是插到第3个元素的位置上
# a列表内容就变成了 ['你好', 1, 'rrr', 2, 3.14, 'python']
a.insert(2, 'rrr')
print(a)
同样的,insert方法的返回值也是 None
pop
如果我们要从列表 取出并删除 一个元素,就可以使用pop方法。
该方法的参数就是要取出的元素的索引
注意,取出后,该元素就从列表中删除了。所以pop也经常用来删除某个元素
比如
a = [1, 2, 3.14, 'python'] # 取出索引为3 的元素,也就是第4个元素
poped = a.pop(3)# 取出后,a列表对象内容就变成了 [ 1, 2, 3.14]
print(a)# 而取出的元素赋值给变量poped, poped的内容就是 'python'
print(poped)
pop 方法的返回值是提取出来的元素
remove
remove方法也是删除列表元素。
pop方法的参数是要删除元素的 索引,
而 remove方法的参数就是要删除元素的 值。
remove从第1个元素开始,寻找 和参数对象 相等的元素,如果找到了,就删除。
找到后,不会继续往后寻找其它相等的元素。
也就是说remove 最多只会删除1个元素。
比如
var1 = ['a','b','c','a']
var1.remove('a')
print(var1)
运行结果 var1就变成了 [‘b’, ‘c’, ‘a’]。
可以发现,只删除了第一元素’a’, 最后的 ‘a’ 并么有删除。
同样的,remove 方法的返回值也是 None
reverse
reverse方法将列表元素倒过来
var1 = [1,2,3,4,5,6,7]
var1.reverse()
print(var1)
运行结果 var1就变成了 [7, 6, 5, 4, 3, 2, 1]
同样的, reverse 方法的返回值也是 None
index
index 方法返回 参数对象 在列表 中的位置,也就是索引
var1 = [1,2,3,4,5,6,7]
idx = var1.index(5)
print(idx)
运行后,发现idx的值为4 , 也就是说 5这个元素在列表 var1 中 索引为4
sort
可以使用 sort 方法对列表进行排序。
调用sort 方法的列表中的元素通常都是 数字 或者 字符串。如下
students = ['Alex','Tom','Jerry','Michale','Alex']
students.sort()
print(f'after sort: {students}')numbers = [7,3,8,2,9]
numbers.sort()
print(f'after sort: {numbers}')
输出如下
after sort: ['Alex', 'Alex', 'Jerry', 'Michale', 'Tom']
after sort: [2, 3, 7, 8, 9]
注意: 调用过 sort 方法后,列表中的内容就改变了。
sort方法的返回值是None,所以不要写这样的代码
numbers = [7,3,8,2,9]
numbers2 = numbers.sort()
print(numbers2)
这样 numbers2 的值是None, 而不是排序后的列表
相关文章:
【Python学习笔记】对象、方法
1. 对象方法定义 对象通常都拥有属于自己的 方法(英文叫 method )。 对象的方法其实可以看成是对象所拥有的函数。也就是说 这个方法,是属于这个对象的函数。 调用对象的方法,和调用函数差不多,只要在前面加上 所属…...
企业IT资产设备折旧残值如何计算
环境: 企业/公司 IT资产 问题描述: 企业IT设备折旧残值如何计算? 解决方案: 1.按三年折旧 净值原值-月折旧额折旧月份 , 月折旧额原值(1-3%)/36 折旧月份ROUND(E2*(1-3%)/36,2) 2.净值E2-F2*G2...
Linux性能优化--性能工具:下一步是什么
13.0 概述 本章是对一些事情的思索,包括:Linux性能工具的当前状态,哪些仍需要改进以及为什么Linux是当前一个相当不错的进行性能调查的平台。 阅读本章后,你将能够: 了解Linux性能工具箱的漏洞,以及一些理…...
网工内推 | IT主管、高级网工,上市公司,必须持有HCIE认证
01 深圳市飞荣达科技股份有限公司 招聘岗位:高级网络工程师 职责描述: 1. 参与、负责集团公司IT基础技术架构的规划设计、实施及维护、性能优化,包括数据中心机房、网络架构、虚拟化平台、信息安全设备及灾备系统等; 2. 负责集团…...
bulldog 靶机
bulldog 信息搜集 存活检测 详细扫描 后台网页扫描 网页信息搜集 正在开发的如果你正在读这篇文章,你很可能是Bulldog Industries的承包商。恭喜你!我是你们的新老板,组长艾伦布鲁克。CEO解雇了整个开发团队和员工。因此,我们需要迅速招到一…...
如何借助边缘智能网关打造智慧城市便民驿站
智慧城市驿站是一类提供多样化便利服务的新型智能公共设施,通过融合物联网技术、边缘智能技术、新能源技术等,为城市居民整合提供休闲、购物、卫生、广告、安全等公共服务,进一步提升日常生活体验。本篇就为大家介绍如何基于边缘智能网关&…...
谈谈电商App的压测
背景 最近恰逢双十一,大大小小的电商app在双十一之前都会做一次压测,曾经在小公司工作的时候很想知道大公司是如何压测的,有什么高深的压测工具没,本文就来揭露一下 压测真相 在确认使用什么压测工具进行压测之前,我…...
VsCode修改侧边栏字体大小——用缩放的方法
缩放界面字体百分比(包括编辑器界面) 如果只修改文本编辑区的字体大小,可以在File -> Preferences -> Settings 中修改font的大小。但是侧边栏的字体不会改变,所以可以使用缩放的方法先修改整个界面的字体大小,…...
基于Java的农资采购销售管理系统设计与实现(源码+lw+部署文档+讲解等)
文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…...
【AIGC核心技术剖析】扩大富有表现力的人体姿势和形状估计SMPLer-X模型
富有表现力的人体姿势和形状估计 (EHPS) 将身体、手和面部运动捕捉与众多应用结合起来。尽管取得了令人鼓舞的进展,但当前最先进的方法仍然在很大程度上依赖于有限的训练数据集。在这项工作中,我们研究了将 EHPS 扩展到第一个通用基础模型(称为 SMPLer-X),以 ViT-Huge 作为…...
【C++面向对象】1. 类、对象
文章目录 【 1. 类 & 对象的定义 】1.1 类的定义1.2 对象的定义 【 2. 类的成员 】2.1 数据成员2.2 成员函数类的内部定义成员函数类的外部定义成员函数成员函数的访问实例 【 3. 类的访问修饰符 】3.1 public 公有成员3.2 private 私有成员3.3 protected 保护成员3.4 继承…...
PAM从入门到精通(十三)
接前一篇文章:PAM从入门到精通(十二) 本文参考: 《The Linux-PAM Application Developers Guide》 先再来重温一下PAM系统架构: 更加形象的形式: 五、主要函数详解 11. pam_open_session 概述&…...
Stable Diffusion WebUI几种解决手崩溃的方法
1. 添加与手相关负面提示词 如何提价提示词呢? 首先有一个embeddings模型文件bad-hands-5,我们可以去各个大模型网站去搜,我是在C站上面下载的。 附上C站地址:https://civitai.com/ 下载好之后,你需要将文件放入stable-diffusion-webui\embeddings目录中。位置如下所示…...
kr 第三阶段(一)16 位汇编
为什么要学习 16 位汇编? 16 位汇编包含了大部分 32 位汇编的知识点。有助于在学习内核的两种模式。 实模式:访问真实的物理内存保护模式:访问虚拟内存 有助于提升调试能力,调试命令与 OllyDbg 和 WinDebug 通用。可以学习实现反…...
power point导出pdf保留字体
在 slides 中用到非自带的字体,如 [1],想导出成 pdf 文件(因为导出成图,如 png,放大会蒙),并在别人电脑里也保留字体。除了让别人也装上相应字体,可以: 参考 [2]&#x…...
云务器迁移(腾讯云>华为云)
自己平时除了写些bug外还喜欢玩玩服务器,这不前几年买了一个域名,当时服务器买的是阿里云的,想着域名备案挺麻烦的就一直用着,只是在服务器到期后会重新购买其他运营商的(关键是续不起🤫) 这不最…...
[USACO11MAR] Brownie Slicing G题解(二分+二维前缀和+矩阵分割)
[USACO11MAR] Brownie Slicing G 题目地址 P3017 [USACO11MAR] Brownie Slicing G 思路 二分最大化最小值 切割思路: 一行一行进行切割,如果这一行可以切割出b块大于等于mid的块,就开始切割下一行 如果无法切割出b块,就把正在…...
【每日一题】—— B. Arrays Sum (Grakn Forces 2020)
🌏博客主页:PH_modest的博客主页 🚩当前专栏:每日一题 💌其他专栏: 🔴 每日反刍 🟡 C跬步积累 🟢 C语言跬步积累 🌈座右铭:广积粮,缓称…...
XTU-OJ 1328-数码和
题目描述 一个10进制数n在2∼16进制下可以得到的不同的数码和,求在这些数码和中出现次数最多的数码和。 比如20, 进制2345678910111213141516数码10100202110403226242220191817161514数码和2424586421098765 其中数码和2和4分别出现了3次,为…...
混入组件 (mixin)
1 什么是混入以及作用 *混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。作用:主要作用是继承和封装…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
