零基础学习Python(七)

news2024/11/24 11:32:57

1. 字符串常用方法

lower()、upper():转换为小写字符串、大写字符串

split(str):按照指定字符串str进行分割,结果为列表:

email = "123@qq.com"
print(email.split("@"))
['123', 'qq.com']

count(str):统计str字符串出现的次数:

s = "hello"
print(s.count("o"))
1

find(str):查找str字符串首次出现的位置,如果没有,则为-1:

s = "hello"
print(s.find("l"))
print(s.find("p"))
2
-1

index(str):与find类似,区别在于如果字符串没有找到,则报错

startswith(str)、endswith(str):是否以str开头、是否以str结尾

replace(old, new):使用new字符串替换所有的old字符串:

print("hello".replace("o", "p"))
hellp

center(width, fillchar):在指定的宽度范围内居中,并可以使用fillchar进行填充:

print("HelloWorld".center(20))

print("HelloWorld".center(20, "*"))

join(iter):将可迭代对象iter每个元素通过该字符串相连:

print(".".join("hello"))
h.e.l.l.o

strip(chars):去掉左侧和右侧的chars中包含的字符,chars不穿则默认去除空格:

print("    Hello  World    ".strip())
Hello  World
print("ld-HelloWorld".strip("dl"))
-HelloWor

lstrip(chars)、rstrip(chars):去掉左侧的chars中包含的字符、去掉右侧的chars中包含的字符

2. 格式化字符串的三种方式

占位符方式:

name = "马冬梅"
age = 18
score = 98.5
print('姓名:%s,年龄:%d,分数:%.1f' % (name, age, score))
姓名:马冬梅,年龄:18,分数:98.5

f-string方式(Python 3.6之后的方式):

print(f'姓名:{name}, 年龄: {age}, 分数: {score}')
姓名:马冬梅,年龄:18,分数:98.5

format方式:

print('姓名:{0}, 年龄: {1}, 分数: {2}'.format(name, age, score))
姓名:马冬梅,年龄:18,分数:98.5

format方式中的大括号中的0/1/2是format参数对应的索引位置,实际上也可以这样写: 

print('姓名:{2}, 年龄: {0}, 分数: {1}'.format(age, score, name))

 3. 字符串的编码与解码

 字符串的编码与解码本质上是字符串与字节类型的转换。编码使用encode方法(默认编码方式是utf-8),解码使用decode方法:

s = "伟大的中国梦"
code = s.encode("utf-8")
print(code)
print(code.decode("utf-8"))

4. 字符串的验证

isdigit():所有字符是否都是数字,必须为阿拉伯数字

isnumeric(): 所有字符是否都是数字,可以为阿拉伯数字、罗马数字、中文数字

isalpha():所有字符是否都是字母,包括中文字符

islower():所有字符是否都是小写

isupper():所有字符是否都是大写

istitle():是否单词是否首字母大写

print("一二三".isnumeric())
print("壹贰叁".isnumeric())
print("中文和English".isalpha())
print("Hello World".istitle())
print("Hello world".istitle())
True
True
True
True
False

 5. 正则表达式

re.match函数从字符串的起始位置开始匹配,如果匹配成功,结果为Match对象,否则为None

import re
pattern = '\d+\.\d+'  #匹配一个或多个数字.一个或多个数字
print(re.match(pattern, '3.11'))
print(re.match(pattern, 'd3.11'))
<re.Match object; span=(0, 4), match='3.11'>
None

继续查看match对象的详细属性: 

m = re.match(pattern, '3.11')
print("匹配的起始位置", m.start())
print("匹配的结束位置", m.end())
print("匹配的区间", m.span())
print("匹配的数据", m.group())
匹配的起始位置 0
匹配的结束位置 4
匹配的区间 (0, 4)
匹配的数据 3.11

re.search函数搜索整个字符串匹配,只匹配第一个,如果匹配成功,结果为Match对象,否则为None

import re
pattern = '\d+\.\d+'  #匹配一个或多个数字.一个或多个数字
print(re.search(pattern, 'def3.11 & 2.7'))
<re.Match object; span=(3, 7), match='3.11'>

re.findall函数搜索整个字符串匹配,匹配所有,返回一个列表,如果没匹配,就是一个空列表(不是None)

print(re.findall(pattern, 'def3.11 & 2.7'))
['3.11', '2.7']

re.sub函数用于实现字符串中指定子串的替换

import re
pattern = '\d+\.\d+'  #匹配一个或多个数字.一个或多个数字
print(re.sub(pattern, '*', 'def3.11 & 2.7'))
def* & *

 re.split函数用于按照指定字符串来分割原始字符串

import re
pattern = '\d+\.\d+'  #匹配一个或多个数字.一个或多个数字
print(re.split(pattern, 'def3.11 & 2.7'))
['def', ' & ', '']

6. 习题

1个英文字符是1个字符,1个中文字符也是1个字符,只不过1个英文字符是1个字节,utf-8编码下,1个中文字符是3个字节,gbk编码下,1个中文字符是2个字节。

7. 内置函数

divmod:获取商和余数

x, y = divmod(13, 5)
print(x, y)
2 3

sorted:对可迭代对象进行排序,返回一个新的对象,不改变原对象中的元素顺序:

l = [3, 1, 44, 23]
print(sorted(l))
[1, 3, 23, 44]

reversed:反转序列

l = [3, 1, 44, 23]
print(list(reversed(l)))
[23, 44, 1, 3]

all:判断迭代器中所有元素的布尔值是否都为True

l1 = [3, 1, 44, 23, {}]
l2 = [3, 1, 44, 23, {2}]
print(all(l1))
print(all(l2))
False
True

any:判断迭代器中是否有元素的布尔值为True

l1 = [3, 1, 44, 23, {}]
l2 = [{}, (), False]
print(any(l1))
print(any(l2))
True
False

filter:通过指定条件过滤迭代器元素

l = [1, 2, 3, 4]
print(list(filter(lambda x: x % 2 == 0, l)))
[2, 4]

map:通过指定函数映射迭代器元素

l = [1, 2, 3, 4]
print(list(map(lambda x: x * 2, l)))
[2, 4, 6, 8]

8. 类和对象的特殊属性和方法

class A:
    pass


class B:
    pass


class C(A, B):
    def __init__(self, name, age):
        self.name = name
        self.age = age

a = A()
b = B()
c = C("zhangsan", 20)

print("a的属性字典", a.__dict__)
print("b的属性字典", b.__dict__)
print("c的属性字典", c.__dict__)
a的属性字典 {}
b的属性字典 {}
c的属性字典 {'name': 'zhangsan', 'age': 20}
print("a所属的类", a.__class__)
print("b所属的类", b.__class__)
print("c所属的类", c.__class__)
a所属的类 <class '__main__.A'>
b所属的类 <class '__main__.B'>
c所属的类 <class '__main__.C'>
print("A的父类元祖", A.__bases__)
print("B的父类元祖", B.__bases__)
print("C的父类元祖", C.__bases__)
print("A的父类", A.__base__)
print("B的父类", B.__base__)
print("C的父类", C.__base__)
A的父类元祖 (<class 'object'>,)
B的父类元祖 (<class 'object'>,)
C的父类元祖 (<class '__main__.A'>, <class '__main__.B'>)
A的父类 <class 'object'>
B的父类 <class 'object'>
C的父类 <class '__main__.A'>
print("A类的层次结构", A.__mro__)
print("B类的层次结构", B.__mro__)
print("C类的层次结构", C.__mro__)
A类的层次结构 (<class '__main__.A'>, <class 'object'>)
B类的层次结构 (<class '__main__.B'>, <class 'object'>)
C类的层次结构 (<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)
print("A类的子类", A.__subclasses__())
print("B类的子类", B.__subclasses__())
print("C类的子类", C.__subclasses__())
A类的子类 [<class '__main__.C'>]
B类的子类 [<class '__main__.C'>]
C类的子类 []

注意,__subclasses__()是一个方法,不是属性

9. 对象的浅拷贝与深拷贝

浅拷贝:拷贝出来的对象的属性与原对象是一个地址空间的

深拷贝:拷贝出来的对象的属性与原对象不是一个地址空间的

b = B()
bcopy = copy.copy(b)  #浅拷贝
bdeepcopy = copy.deepcopy(b)   #深拷贝

 10. random模块的简单使用

seed函数时生成随机数种子,如果不传参,则默认取当前系统时间,如果随机数种子相同,那么生成的随机数也相同。 

random.seed(10)
print(random.random())
print(random.randint(1, 10))

多次执行random.random和random.randint函数,发现结果一样:

0.5714025946899135
7

randrange用于产生m与n之间的步长为k的随机数:

print(random.randrange(1, 10, 3))
print(random.randrange(1, 10, 3))
print(random.randrange(1, 10, 3))
print(random.randrange(1, 10, 3))
print(random.randrange(1, 10, 3))
print(random.randrange(1, 10, 3))
7
7
7
4
7
1

choice函数用于从序列中随机选取一个数:

print(random.choice(range(1, 10)))
print(random.choice(range(1, 10)))
print(random.choice(range(1, 10)))
print(random.choice(range(1, 10)))
print(random.choice(range(1, 10)))
7
4
2
3
7

shuffle函数用于随机打乱序列的顺序:

li = [1, 2, 3, 4, 5, 6]
random.shuffle(li)
print(li)
[5, 6, 1, 2, 4, 3]

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

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

相关文章

MySQL 系统库

文章目录 一. 概念二. performance_schema1. 概念 2. 检查当前数据库版本是否支持3. performance_schema表分类5. 配置与使用6. 查看执行失败的SQL语句7. 查看最近事务执行信息8. 小结 三. sys系统库1. 使用须知2. 使用3. 查看慢SQL语句慢在哪4. 小结 四. Information_schema1.…

中国城市经济韧性数据集(2007-2022年)

数据来源&#xff1a;数据来自历年《中国城市统计NJ》、各省市《统计NJ》及《中国区域经济统计NJ》 时间范围&#xff1a;2007-2022年 数据范围&#xff1a;中国地级市样例数据&#xff1a; 包含内容&#xff1a; 全部内容下载链接&#xff08;原始数据计算代码最终数据&…

Spring Boot DevTools:简化开发,实现热部署

Spring Boot DevTools&#xff1a;简化开发&#xff0c;实现热部署 1、如何集成&#xff1f;MavenGradle 2、主要特性3、注意事项 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; Spring Boot DevTools是开发者的得力助手&#xff0c;它通过…

AR 眼镜之-系统通知定制(通知弹窗)-实现方案

目录 &#x1f4c2; 前言 AR 眼镜系统版本 系统通知定制 1. &#x1f531; 技术方案 1.1 技术方案概述 1.2 实现方案 1&#xff09;实现系统通知的监听 2&#xff09;系统通知显示&#xff1a;通知弹窗 2. &#x1f4a0; 实现系统通知的监听 2.1 继承 NotificationLi…

全场景——(六)Moubus 功能码详解

文章目录 一、功能码概要二、&#xff08;0x01&#xff09;读取线圈2.1 功能说明2.2 查询报文2.3 响应报文 三、 (0x02) 读取离散量输入值3.1 功能说明3.2 查询报文3.3 响应报文 三、&#xff08;0x03&#xff09;读取保持寄存器值3.1 功能说明3.2 查询报文3.3 响应报文 五、 (…

LabVIEW项目中硬件选型与长期需求沟通

在LabVIEW项目中&#xff0c;选择合适的硬件和有效的需求沟通是成功的关键。大品牌硬件通常具备更高的稳定性和完善的售后服务&#xff0c;而小品牌虽然看似便宜&#xff0c;却可能带来通讯不稳定、技术支持不足等问题&#xff0c;增加开发难度。同时&#xff0c;在科研类项目中…

光性能 -- OSNR Loss均衡

什么是OSNR&#xff1f; OSNR&#xff08;Optical Signal Noise Ratio &#xff09;即光信噪比。它是指传输链路中的信号光功率与噪声光功率的比值&#xff0c;OSNR计算公式如下所示&#xff1a; OSNR是决定波分系统性能的最主要因素之一。它决定了传输性能的最高值&#xff0c…

ZaKi:Ingonyama的Prover market基础设施

1. 引言 Ingonyama团队预计在不久的将来会出现大量去中心化证明市场&#xff08;Prover market&#xff09;。这些市场的独特之处在于高可用性和高性能的基础设施&#xff0c;以及强大的安全性和透明度保障。 2. 证明市场的出现 零知识 (ZK) Rollups&#xff0c;如 Starknet…

望繁信科技亮相2024数博会:以流程智能引领数字化转型新未来

在全球瞩目的2024中国国际大数据产业博览会&#xff08;以下简称“数博会”&#xff09;上&#xff0c;上海望繁信科技有限公司&#xff08;简称“望繁信科技”&#xff09;作为大数据流程智能领域的领军企业&#xff0c;隆重亮相并展示了其在数字化转型与人工智能领域的最新科…

如何使用WebSafeCompiler进行网站优化和知识产权保护

关于WebSafeCompiler WebSafeCompiler是一款功能强大的Web安全与优化工具&#xff0c;该工具基于Node.js开发&#xff0c;可以帮助广大研究人员编译静态网站以进行优化或知识产权保护。 WebSafeCompiler&#xff08;WSC&#xff09;是一款高级Node.js实用程序&#xff0c;旨在…

Python 处理 PDF 文件(PyPDF2, ReportLab)

Python 是一门强大的编程语言&#xff0c;在处理PDF文件方面有着丰富的库支持&#xff0c;其中最常用的两个库是 PyPDF2 和 ReportLab。PyPDF2 主要用于读取、拆分、合并和修改已有的PDF文件&#xff0c;而 ReportLab 则擅长生成新的PDF文件。 一、PyPDF2 1. PyPDF2 概述 Py…

Mysql剖析(四)----Mysql的行锁、表锁、间隙锁详解

目录 一丶Mysql的锁分类 二丶乐观锁和悲观锁 三丶共享锁和排它锁 四丶表锁页锁和行锁 五丶Mysql锁超时 简介&#xff1a;编程中的锁是一种同步机制&#xff0c;用于控制对共享资源的访问&#xff0c;确保同一时间只有一个线程可以访问共享资源&#xff0c;从而避免竞态条件…

通信协议——Modbus 讲明白了

目 录 Modbus通信协议一、说明1.1 描述1.2 查询1.3 响应 二、异常三、功能码 Modbus通信协议 Modbus由Modicon公司&#xff08;也是现在的施耐德电气&#xff09;于1979年开发&#xff0c;是一种工业现场总线协议标准。最初是为使用PLC&#xff08;可编程逻辑控制器&#xff0…

[激光原理与应用-126]:傅里叶变化与频域分析

目录 一、什么是傅里叶变换 1.1 基本概念 &#xff08;1&#xff09;首先&#xff0c;先看时域图像&#xff1a; &#xff08;2&#xff09;接下来&#xff0c;频域波形 &#xff08;3&#xff09;傅里叶变换 1.2 应用 &#xff08;1&#xff09;离散傅里叶变换在图像处…

Shell脚本格式化打印信息样例

以下是一个基于Centos7安装docker的脚本 logging.sh [rootbogon ~]# cat logging.sh #!/bin/bashNC\033[0m RED\033[31m GREEN\033[32m YELLOW\033[33m BLUE\033[34mlog::err() {printf "[$(date %Y-%m-%dT%H:%M:%S.%2N%z)][${RED}ERROR${NC}] %b\n" "$"…

美团2024年春招第一场笔试【前端移动端方向】编程题题解Java

1、小美的平衡矩阵 前缀和&#xff0c;时间复杂度为O(n^3) 对于每个矩形&#xff0c;已知边长k&#xff0c;只用每次遍历矩形的左上顶点&#xff0c;就可以确定整个矩形范围。然后统计该矩形中01的具体数量&#xff0c;判断是否相等。而这一步可以使用前缀和&#xff0c;建立数…

PN结--

文章目录 准备知识P型 N型半导体多子 少子&#xff08;相关性质受温度影响程度的关键点&#xff09; PN结的形成势垒 PN结的单向导通性正向偏置反向偏置 PN结的电流方程正向特性反向特性反向击穿反向击穿会把二极管搞坏吗 掺杂浓度与其宽度的关系 准备知识 P型 N型半导体 P型…

无人机之使用技巧篇

无人机使用技巧涉及多个方面&#xff0c;从起飞前的准备到飞行中的操控&#xff0c;再到降落后的维护&#xff0c;都需要掌握一定的技巧。以下是一些关键的无人机使用技巧&#xff1a; 一、起飞前准备 检查无人机&#xff1a;确保无人机完好无损&#xff0c;各部件连接牢固&a…

Adobe DC 2022提示无法识别的错误 - 解决方案

Adobe DC 2022提示无法识别的错误 - 解决方案 问题解决方案更改安装&#xff08;推荐&#xff09;重新安装&#xff08;推荐&#xff09;降级安装&#xff08;不推荐&#xff09; 问题 使用Adobe DC 2022合并图片创建PDF时&#xff0c;会提示无法识别的错误&#xff0c;这是因…

OrangePi AIpro 香橙派 昇腾 Ascend C算子开发 - 环境搭建

OrangePi AIpro 香橙派 昇腾 Ascend C算子开发 flyfish 环境搭建部分 OrangePi AIpro 香橙派的npu为310B4&#xff0c;通常配置的时候写 Ascend310B4 社区版资源下载地址 下载 CANN 这里选择的是 CANN 8.0.RC3.alpha002 异构计算架构CANN&#xff08;Compute Architecture …