【python3】9.python高阶内容(上)_基础

news2025/1/11 14:28:39

9.python高阶内容(上)_基础

2022.12.27 python高阶内容(上)_基础

9.1 字符串的高阶玩法

9.1.1 %百分号模式

  • %d:整数
  • %i:整数
  • %s:字符
  • %f:小数

方式1】:前面用格式占位,后面用具体的内容

name = "莫烦Python"
age = 18
gender = "男"

print("我的名字是 %s !我 %d 岁了,我是 %s 的~" % (name, age, gender))
我的名字是 莫烦Python !我 18 岁了,我是 男 的~

方式2】:用字典形式,就不用一一对应了

第一种是需要一一对应的,但变量多了,有时顺序会弄错。

name = "莫烦Python"
age = 18
gender = "男"
print("我的名字是 %(nm)s !我 %(age)d 岁了,我是 %(gd)s 的~" % {"nm": name, "age":age, "gd":gender})
我的名字是 莫烦Python !我 18 岁了,我是 男 的~

小数练习】:%.几就是几位小数;%几d就是一共占几位,没有前面空格补齐

print("%f" % (10/3))# 后面不限制
print("%.2f" % (10/3))# 后面限制 2 个位置
3.333333
3.33
print("%4d" % (1/3))    # 前面补全最大 4 个位置
print("%5d" % 12)       # 前面补全最大 5 个位置
   0
   12

9.1.2 format

format%之后发明的 用法一样,解决的不知道具体类型是什么也想用此方式,只需要占位{}就行

只用{}占位

name = "莫烦Python"
age = 18
height = 1.8
print("我的名字是 %s !我 %d 岁了,我 %f 米高~" % (name, age, height))
print("我的名字是 {} !我 {} 岁了,我 {} 米高~".format(name, age, height))
我的名字是 莫烦Python !我 18 岁了,我 1.800000 米高~
我的名字是 莫烦Python !我 18 岁了,我 1.8 米高~

用{序号}】:解决的是有些内容想用多次,这时候必须都用序号,少任一个都报错

name = "莫烦Python"
age = 18
height = 1.8
#0号信息用了2次
print("我的名字是 {0} !我 {1} 岁了,我 {2} 米高~我是{0}".format(name, age, height))
我的名字是 莫烦Python !我 18 岁了,我 1.8 米高~我是莫烦Python

用某个信息用多次的另一种方法】:命名

name = "莫烦Python"
age = 18
height = 1.8
print("我的名字是 {nm} !我 {age} 岁了,我 {ht} 米高~我是{nm}".format(nm=name, age=age, ht=height))
我的名字是 莫烦Python !我 18 岁了,我 1.8 米高~我是莫烦Python

【小数问题】

在这里插入图片描述

print("我 {:.3f} 米高".format(1.12345))
print("我 {ht:.1f} 米高".format(ht=1.12345))
print("我 {:3d} 米高".format(1))
print("我 {:3d} 米高".format(21))
我 1.123 米高
我 1.1 米高
我   1 米高
我  21 米高
txt = "You scored {:%}"
print(txt.format(2.1234))

txt = "You scored {:.2%}"
print(txt.format(2.1234))
You scored 212.340000%
You scored 212.34%

9.1.3 f格式化字符串

比format更简单,在字符串前加f,那么{x}就是占位信息

name = "莫烦Python"
age = 18
height = 1.8
print(f"我的名字是 {name} !我 {age} 岁了,我 {height} 米高~")
我的名字是 莫烦Python !我 18 岁了,我 1.8 米高~
score = 2.1234
print(f"You scored {score:.2%}")
print(f"You scored {score:.3f}")
print(f"You scored {12:5d}")
You scored 212.34%
You scored 2.123
You scored    12

9.1.4 修改字符串

在这里插入图片描述
内容很简单,我举一个例子

"帮我替换掉莫烦".replace("莫烦", "沫凡")
'帮我替换掉沫凡'
"  我不想要前后的空白,但是  中间\n的可以有\n  ".strip()
'我不想要前后的空白,但是  中间\n的可以有'
print("你|帮|我|拆分|一下|这句话".split("|"))
print("|".join(["你","帮", "我", "重组", "一下", "这句话"]))
['你', '帮', '我', '拆分', '一下', '这句话']
你|帮|我|重组|一下|这句话

9.2 Python的偷懒用法

9.2.1 Lambda: 更直接的 Function(函数)

add = lambda a, b: a+b
print(add(1,2))
3

lambda函数:冒号:前面是未知数,后面是函数主体,那么引用它就是实数要和未知数一一对应

9.2.2 for的复杂用法

举几个列子

l = [i*2 for i in range(10)]
print(l)
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
d = {"index"+str(i): i*2 for i in range(10)}
print(d)
{'index0': 0, 'index1': 2, 'index2': 4, 'index3': 6, 'index4': 8, 'index5': 10, 'index6': 12, 'index7': 14, 'index8': 16, 'index9': 18}

9.2.3 一些能少行的操作

done = False
a = 1 if done else 2
print(a)
2

如果判断对了,输出前面的 错了 就输出后面的

9.2.4 一行for+判断

l = [i*2 for i in range(10) if i%2==0]
print(l)
[0, 4, 8, 12, 16]
d = {"index"+str(i): i*2 for i in range(10) if i % 2 == 0}
print(d)
{'index0': 0, 'index2': 4, 'index4': 8, 'index6': 12, 'index8': 16}

9.2.5 enumerate

enumerate,列举序数和内容的

l = [11,22,33,44]
for count, data in enumerate(l):
    if count == 2:
        data += 11
    l[count] = data
print(l)
[11, 22, 44, 44]

count 拿到了序数,data拿到了内容

自定义enumerate中的序数

l = [11,22,33,44]
d = {}
for count, data in enumerate(l, start=5):
    d[count] = data
print(d)
{5: 11, 6: 22, 7: 33, 8: 44}

9.2.6 Zip同时迭代

我要同时处理两个列表,一个是姓名一个是分数,并把它们做成一个字典,你会怎么做?

name = ["a", "b", "c"]
score = [1,2,3]
d = {}
for i in range(3):
    d[name[i]] = score[i]
print(d)
{'a': 1, 'b': 2, 'c': 3}

种写法对于我来说,还是比较累赘的。怎么搞?直接上 zip:

name = ["a", "b", "c"]
score = [1,2,3]
d = {}
for n, s in zip(name, score):
    d[n]=s
print(d)
{'a': 1, 'b': 2, 'c': 3}
name = ["a", "b", "c"]
score = [1,2,3]
bonus = [1,0,1]
d = {}
for n, s, b in zip(name, score, bonus):
    d[n]=s+b
print(d)
{'a': 2, 'b': 2, 'c': 4}

9.2.7 reverse & reversed

翻转列表

【方法1】

l = [1,2,3]
_l = []
for i in range(len(l)):
    _l.append(l[-i-1])
print(_l)
[3, 2, 1]

【方法2】

l = [1,2,3]
_l = [l[-i-1] for i in range(len(l))]
print(_l)
[3, 2, 1]

【方法3】:revers自己翻转

l = [1,2,3]
l.reverse()
print(l)
[3, 2, 1]

【方法4】:reversd用在 for 循环里的翻转迭代器

l = [1,2,3]
for i in reversed(l):
    print(i)
3
2
1

【方法5】深拷贝

l = [1,2,3]
_l = l[::-1]
print(l)
print(_l)
[1, 2, 3]
[3, 2, 1]
l[2]=4
print(l)
print(_l)
[1, 2, 4]
[3, 2, 1]

9.3 复制的"玄学":深拷贝和浅拷贝

有两种拷贝,浅拷贝就相当于起个别名,改一个另一个也改;深拷贝相当于完全另一个个体,改一个另一个不受影响

9.3.2 切片为深拷贝

可看9.2.7方法5

9.3.2 copy

【一般情况是深拷贝】

l = [1,2,3]
_l = l.copy()
_l[0] = -1
print(_l)
print(l)
[-1, 2, 3]
[1, 2, 3]

【特殊是浅拷贝】:Python 他在创造之初,就有这么个约定,列表中直接存放的数值,字符,和存 class 实例,列表,字典不同。 对数值字符的复制,直接是复制的值,而不是一个投影。

l = [[1],[2],3]
_l = l.copy()
_l[0][0] = -1
print(_l)
print(l)
[[-1], [2], 3]
[[-1], [2], 3]

【浅拷贝变深拷贝deepcopy

from copy import deepcopy
l = [[1],[2],3]
_l = deepcopy(l)
_l[0][0] = -1
print(_l)
print(l)
[[-1], [2], 3]
[[1], [2], 3]

浅复制的优势就是快。复制是需要内存和时间的,浅拷贝没有真正复制

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

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

相关文章

Android设计模式详解之访问者模式

前言 访问者模式是一种将数据操作与数据结构分离的设计模式; 定义:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作; 使用场景: 对象结构比较稳定&a…

大厂与小厂招人的区别,看完多少有点不敢相信

前两天在头条发了一条招人的感慨,关于大厂招人和小公司招人的区别。 大厂:有影响力,有钱,能够吸引了大量的应聘者。因此,也就有了筛选的资格,比如必须985名校毕业,必须35岁以下,不能…

基于DoIP使用CANoe对ECU进行诊断测试

伴随以太网引入到车载网络中,本文分享通过常用工具CANoe怎么样对ECU进行通信以及测试。 相比在车载CAN总线,以太网又有什么与众不同之处? 1、硬件接口卡(收发器) 以往车载CAN网络较常使用的是VN 16XX 系列,在连接ECU进行通信时,除了配置波特率也要进行通道分配: 而…

7个学习UI、UX设计一定要经历的步骤

我们不是一些有才华的设计师。我们天生就有艺术天赋。后天我们学会了设计技巧。设计的根本目的是解决问题。设计是不断发现和解决问题。 有许多设计领域:UI、UX.产品设计师.平面设计师.交互设计师.信息架构师等,所以要找出你最感兴趣的设计专业。 现在让…

美颜sdk动态贴纸技术、代码分析

目前,美颜sdk动态贴纸已经成了各大直播平台主播的必备“直播伴侣”,在其他的视频拍摄场景动态贴纸的热度同样很高,本篇文章小编将为大家深度盘点一下美颜sdk动态贴纸的技术实现以及代码。 一、多终端适配 对于如今的直播平台终端来说&#x…

CAPL学习之路-测试功能集函数(测试结构化)

用户可以使用如下函数在测试报告中对每一条测试用例设置结构化的输出内容 TestCaseDescription 添加测试用例的描述文本 此函数用于测试用例中,描述文本会添加在固定区域(测试用例title的下方)。多次调用该函数,描述文本会合并显示在固定区域。如果想让描述文本换行,可以…

爆火的Web3.0背后,百度营销如何抓住流量密码?

出品| 大力财经 文 | 魏力 AI、元宇宙、Web3.0、AIGC等新技术、新概念的加持,给传统的流量营销平台带来了前所未有的挑战。尤其是短视频时代的崛起,用户的使用习惯开始改变,完全改变了流量的逻辑和习惯。 从搜索引擎业务起家的百度&#x…

DoIP---车载以太网诊断方面边缘节点的路由策略分析

假期后开工第一天,规划好自己一天需要做的事情,按部就班完成每日任务,做好每日总结。 自己一天一个脚印,这不是鸡血,这是工作态度!!! 惯例分享一段喜欢的文字: 每个人…

目标检测之FCOS算法分析

网络结构 (图片来自原论文:FCOS: Fully Convolutional One-Stage Object Detection) 在ResNet50 Backbone中,C3,C4,C5C3,C4,C5C3,C4,C5是卷积特征图; 在FPN结构中,P3,P4,P5,P6,P7P3,P4,P5,P6,P7P3,P4,P5,P6,P7是最后用于预测的特…

2023跨境出海指南:泰国网红营销白皮书

作为东南亚第二大经济体,泰国一直是旅游和企业出海的热门之地。随着电商经济和互联网的发展,加上疫情的催化,泰国的社交媒体行业也得到了飞速发展,已经成为了主流营销方式之一。本文Nox聚星就从网红营销的角度,和大家探…

代码随想录-46-226.翻转二叉树

目录前言题目1.使用队列思路(定义变量)2. 本题思路分析:3. 算法实现4. pop函数的算法复杂度5. 算法坑点前言 在本科毕设结束后,我开始刷卡哥的“代码随想录”,每天一节。自己的总结笔记均会放在“算法刷题-代码随想录…

浅谈一下个人基于IRIS后端业务开发框架的理解

文章目录浅谈一下个人基于IRIS后端业务开发框架的理解现状方案具体实现BaseBizDataFilterSqlImp、RefApiUtil总结浅谈一下个人基于IRIS后端业务开发框架的理解现状由于国内使用基于M语言IRIS平台几乎都在医疗行业。医疗系统又非常的庞大和复杂。前期由于快速占领市场&#xff0…

珠城科技在创业板上市:IPO首日跌破发行价,市值相对蒸发约7亿元

12月26日,浙江珠城科技股份有限公司(下称“珠城科技”,SZ:301280)在深圳证券交易所创业板上市。本次上市,珠城科技的发行价格为67.40元/股,发行数量为1628.34万股,募资总额约为10.98亿元&#x…

java线程

1.创建线程和运行线程 1.1.方式一: 直接使用Thread线程对象创建线程 Slf4j public class TestThread {public static void main(String[] args) {//创建一个线程,并且指定线程名称为"t1"Thread thread new Thread("t1") {Overridepublic void run() {//…

基于JAVA springboot + MYSQL +VUE的项目管理系统(含数据库),包括工时统计、原型预览、效果图管理等

平台介绍 无鱼工时管理系统,是一款轻量级工时记录和管理工具,包括项目管理,工时上报,工时日报,工时统计等功能。 无鱼工时管理系统可通过员工工时上报的方式,来记录项目所花费的工时,帮助企业…

滑块验证 - 使用AJ-Captcha插件【超简单.jpg】

滑块验证实现一、后端1)首先引入maven:2)再在application.yml中自定义水印,直接启动后前端就可以请求接口了3)重写CaptchaCacheServiceRedisImpl①先新建一个文件夹②重写impl二、前端:1)复制文…

UML2面向对象分析与设计(第2版) 谭火彬 杂记

首先,来讲讲我对泛化的理解,其实这是站在的视角的不同而表述的不同,泛化是站在父类的角度,父类给孩子的方式叫泛化,而继承是站在孩子的角度,儿子继承父类的方式叫继承。 其实上了谭老师大概一章的课程&…

使用WebPageTest、Lighthouse和Chrome DevTools评估网站性能

目录 一:使用WebPageTest评估网站性能 二:使用Lighthouse分析性能 1、本地npm安装Lighthouse 2、Chrome DevTools中使用 三:使用Chrome DevTools分析性能 一:使用WebPageTest评估网站性能 进入网站首页WebPageTest - Websit…

Linux下常用基本指令大全

在XShell下的复制粘贴 复制: ctrl insert (有些insert 需要配合fn 来按) 粘贴: shift insert ctrl c / ctrl v 是不行的.1. ls指令 语法:ls [选项][目录或文件] 功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件&#xff0…

从App Lab就一鸣惊人的Gorilla Tag,创始人竟是个电竞选手

前不久,热门VR游戏《Gorilla Tag》登陆Quest正式商店,此前该作已经进入App Lab和SteamVR平台,一度成为App Lab最受欢迎的游戏,至此终于修成正果。截至目前,该作在全平台的下载量高达500万次,在Quest商店累计…