Day 03 python学习笔记
位运算
基于二进制的运算(计算机的底层基于位运算)
计算机最小单位:bit (比特/位/二进制)
1byte(字节) = 8bit ( 0000 0000)
&:与 (全真为真,一假则假)
|:或 (全假为假,一真则真)
^:异或 (相反为真,相同为假)
~:按位取反(包含符号位)(取反后得到的是补码)
>>:右移(相当于除以2的n次方----n:右移的位数)
<<:左移(相当于乘以2的n次方----n:左移的位数)
我们先来了解其底层的原理
1、正数相加
eg: 10+11
0000 1010 (10)
0000 1011 (11)
---------------------------------- (逢二进一)
0001 0101 (21)
2、正数与负数相加的问题
负数:8位的首位作为符号位 (1代表负数 ,0代表正数)
其中8位最大存储:+127(0111 1111)
最小存储:-128 (1000 0000)
因为0没有-0,所以创作者将(1000 0000)定义为-128
eg: -3 +2
1000 0011
0000 0010
---------------------------
1000 0101 (-5) 错误
为了解决负数运算问题----原码、反码、补码三个概念
原码: 数值的标准的二进制位
反码:符号位不变,其余位取反
补码:反码+1
原码 反码 补码
-3 1000 0011 1111 1100 1111 1101
2 (正数原码、反码与补码相同) 0000 0010
-------------------------------------------------------------------------
1000 0001 1111 1110 1111 1111
用补码运算完换算为原码即为结果(-1 : 1000 0001)
计算机底层的运算是基于补码运算
那我们再看一个例子:-3+4
原码 反码 补码
-3 1000 0011 1111 1100 1111 1101
4 0000 0100
-------------------------------------------------------------------------
10000 0001
(溢出的直接丢弃,然后因为结构是正数,正数原码与补码相同,即是结果为1)
然后我们再来学习位运算:
&:与 (全真为真,一假则假)
eg: 8&9
0000 1000
0000 1001 &
---------------------------
0000 1000 (8)
>>> 8&9
8
>>>
|:或 (全假为假,一真则真)
eg: 8|9
0000 1000
0000 1001 |
---------------------------
0000 1001 (9)
>>> 8|9
9
>>>
^:异或 (相反为真,相同为假)
eg: 8^9
0000 1000
0000 1001 ^
---------------------------
0000 0001 (1)
>>> 8^9
1
>>>
补充:一个数异或0,结果为它本身
~:按位取反(包含符号位)(取反后得到的是补码)
eg: ~2
0000 0010
----> 1111 1101(补码) 需 -1 变为反码
----> 1111 1100 (反码) 符号位不变,其余位按位取反变为原码
----> 1000 0011 (原码) -3
>>> ~2
-3
>>>
>>:右移(相当于除以2的n次方----n:右移的位数)
eg: 8>>2
0000 1000
0000 001000 (右边溢出丢弃,左边补0)
结果为 2
>>> 8>>2
2
>>>
<<:左移(相当于乘以2的n次方----n:左移的位数)
eg: 8<<2
0000 1000
000010 0000 (左边溢出丢弃,右边补0)
结果为 32
>>> 8<<2
32
>>>
三元运算符
格式:
条件成立时的代码 if 判断 else 条件不成立时的代码
eg:
a = int(input("请输入数字:"))
print("你成年了!") if a > 18 else print("小屁孩!")请输入数字:20
你成年了!请输入数字:16
小屁孩!
程序结构
分为3种:
顺序结构
选择结构
循环结构
我们今天先来了解选择结构
选择结构
要学习选择结构我们需先温习一下判断语句
布尔类型和比较运算符
真 和 假
True 真 1
False 假 0
变量名=”布尔类型“
通过比较运算符进行内容比较得到
变量定义存储布尔类型的数据
bool_1=True
bool_2=False
print(bool_1,type(bool_1))True <class 'bool'>
比较运算符的使用
print(2==3)
print(2!=3)False
True
if语句
条件语句:去网吧要身份证,可能会发生什么?判断是否成年~
所谓判断就是条件语句,即条件成立执行某些代码,不成立,则不执行代码
单语句
语法:
if 要判断的条件(表达式):条件成立时,要执行的代码1条件成立时,要执行的代码2……
print('你可管不住我哦') #因为未缩进,所以不是条件成立时,才能执行,#就是简单的print语句
注意:if下方未加缩进的代码不是if里的代码,始终会执行
双语句
语法:
if 条件:条件成立执行的代码
else:条件不成立时的代码
注意:后面的是 : 不是 ; (且是英文的)
四个空格缩进不要忘记
if语句执行流程:(debug查看)
某些条件执行了相关代码,则其他情况的代码解释器根本就不会执行
多条件判断语法
eg:
age = int(input("请输入您的年龄:"))#if (age >= 18) and (age <= 40)
if 40 >= age >= 18:print("恭喜你,你成年了")
elif age > 40:print("哇偶,水木年华")
else:print("你是未成年")
判断语句终极--嵌套使用
坐公交:有钱,上车,没钱,不上,上车,有空位置,坐下,没有,站着
#案例:
money = 1
seat = 1
if money ===1 :print('上车')if seat ===1 :print('有空位置,快坐下')、else:print('没位置了,站一会儿吧')
else:print('没钱,跟着跑')
如果没有理解的话,可以在看一下我前两篇博客(python随手小练2和3)可以加深理解
索引
索引 [ ]
分为:正向索引:(从左向右)下标从0开始 eg:0 1 2 3
负数索引:(从右向左)下标从-1开始 eg:-3 -2 -1
eg:
s = 'l love you'
print(s[0])
print(s[1])
print(s[9])
print(s[-1])
print(s[-1]
结果:
l#因为坐标1,即第二个字符是空格
u
u
yprint(s[10])
结果:
Traceback (most recent call last):File "D:\pycharm\main.py", line 5, in <module>print(s[10])
IndexError: string index out of range print(s[-9])
结果:
Traceback (most recent call last):File "D:\pycharm\main.py", line 6, in <module>print(s[-11])
IndexError: string index out of range
#因为没有坐标10和-11,所以报错
字符串的切片
字符串的切片:从字符串中截取一个特定的序列(访问序列中元素的一个办法)
格式:sname[start:end:step]
sname:要操作的序列名称
start:表示的开始位置(包含自身的),如果不去指定的话,默认从0开始
end:表示切片的结束位置(不包含自身),如果不指定的话,默认是序列的长度(下标索引是字符串长度-1)即全部
step:表示切片的步长,如果省略的话,默认为1
举例解释:
eg:
s = 'QinghuadaxueBeijingdaxue'
print(s[0:5]) #省略step
print(s[2:]) #省略end和step
print(s[:5]) #省略start和step
print(s[:]) #省略start、end和step
print(s[0]) #错误省略,变成索引结果:
Qingh #截取坐标0-4共5个字符(因为start包含自身,end不包含自身),即左闭右开
nghuadaxueBeijingdaxue #从坐标2-序列的长度(即下标索引是字符串长度-1)
Qingh
Q
当省略step时,第二个 :可以省略
若省略step和end时,第二个 :可以省略,但第一个 :不能省略(不然就变成索引了)
s = 'QinghuadaxueBeijingdaxue'
print(s[-3:-1])
print(s[-1:-3])
print(s[0:7:2])
print(s[::-1])
print(s[-1:-3:-1])结果:
xu #因为step默认为1,所以是从左到右#操作错误,空字符串
Qnha #因为step为2,所以是两个字符为一步
euxadgnijieBeuxadauhgniQ #因为step为-1,默认按负索引,相当于反转
eu #现在因为step为-1,所以可以正常切取
可以参考我的后面一篇博客(python随手小练4)加深理解
python数据容器
定义:可以容纳多份数据的数据类型,容纳的每一份数据成为一个元素,可以是任意类型的数据
数据容器:根据是否支持重复元素、是否可以修改、是否有序等
分为:列表,元组,字符串,集合,字典
列表
定义及语法:
字面量:[元素1,元素2,元素3……]
变量名称=[元素1,元素2,元素3……]
列表内的每一个数据,称之为元素
可以为不同数据类型,支持嵌套
eg:
list = [1,2,3,"l love you",[7,8,9]]
#列表里包含数字,字符串,列表
print(list[1])
print(list[-1])
print(list[-1][0]) #取列表里列表的元素结果:
2
[7,8,9]
7
列表的下标索引取出特定位置的元素
列表的索引下标从0开始 ,‘,’分割(且正负索引皆可用)
len() 查看一下列表的长度
列表里的数也是可以改变的(可以重新赋值)
eg:
list = [1,2,3,"l love you",[7,8,9]]
print(len(list))
list[1] = "l love you"
print(list)结果:
5
[1, 'l love you', 3, 'l love you', [7, 8, 9]]
列表的加法和乘法
eg:
list_1 = [1,2,3]
list_2 = [4,5,6]
list_3 = list_1 + list_2
print(list_3)
list_4 = list_3 * 3 #就是元素打印三遍
print(list_4)结果:
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]
定义空列表:
变量名称 = [ ]
变量名称 = list()
eg:
>>> list1 = []
>>> list2 = list()
>>> type(list1)
<class 'list'>
>>> type(list2)
<class 'list'>
eg:
list2 = list([1,2,3]) #在初始化时赋值
print(list2)结果:
[1, 2, 3]
列表的常用操作
(列表的方法(函数定义为class的成员,函数则小称为方法)):
我们可以用dir()来查看列表的方法
其中我们只看后面的,前后有下划线的是翻译器自带的
接下来我们来详细解释一下用法:
append
列表.append(元素) 追加一批元素
eg:
>>> list = [1,2,3]
>>> list.append(21)
>>> list
[1, 2, 3, 21]
>>>
insert
列表.insert(下标,元素) 插入元素
eg:
>>> list
[1, 2, 3, 21]
>>> list2 = [4,5,6]
>>> list.insert(1,list2)
>>> list
[1, [4, 5, 6], 2, 3, 21] #下标1代表插入元素所在的位置
>>>
sort
列表.sort() 列表排序(只能排Int)字母按照ASCII值进行排序,类型不能混淆
默认为升序 (列表.sort(reverse=False) )
列表.sort(reverse=True) 这样即为降序
eg:
>>> list3 = [12,1,23,75,22]
>>> list3
[12, 1, 23, 75, 22]
>>> list3.sort()
>>> list3
[1, 12, 22, 23, 75]
>>> list3.sort(reverse=True)
>>> list3
[75, 23, 22, 12, 1]
>>>
index
列表.index(元素) 查询某元素下标
eg:
>>> list3
[75, 23, 22, 12, 1]
>>> list3.index(22)
2 #索引下标为2时为22
>>> list3.index(222) #没有时报错
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ValueError: 222 is not in list
>>>
reverse
列表.reverse() 将列表元素顺序翻转
eg:
>>> list3
[75, 23, 22, 12, 1]
>>> list3.reverse()
>>> list3
[1, 12, 22, 23, 75]
>>>
remove
列表.remove(元素) 通过元素来移除元素,如果元素不存在则抛出异常
eg:
>>> list3
[1, 12, 22, 23, 75]
>>> list3.remove(12)
>>> list3
[1, 22, 23, 75]
>>> list3.remove(12) #如果要移除的元素不存在则报错
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
>>>
count
列表.count(元素) 统计某元素在列表中的数量
eg:
>>> ls = [1,2,3,1,1,2,2,2,3]
>>> ls
[1, 2, 3, 1, 1, 2, 2, 2, 3]
>>> ls.count(1)
3
>>>
clear
列表.clear() 清空列表
eg:
>>> ls
[1, 2, 3, 1, 1, 2, 2, 2, 3]
>>> ls.clear()
>>> ls
[]
>>>
copy
新列表 = 列表.copy()
浅拷贝对象(拷贝)不等价与 =(引用传递),在堆内存中进行对象拷贝
eg:
>>> ls = [1,2,3]
>>> ls1 = ls.copy()
>>> ls1
[1, 2, 3]
>>>
exend
列表 .extend(列表) 合并列表
eg:
>>> ls1
[1, 2, 3]
>>> ls2 = [3,4,5]
>>> ls1.extend(ls2)
>>> ls1
[1, 2, 3, 3, 4, 5]
>>> ls2
[3, 4, 5]
>>>
pop
列表.pop(下标) 删掉的元素作为返回值得到
下标省略默认删除最后一个元素
eg:
>>> ls2
[3, 4, 5]
>>> ls2.pop()
5
>>> ls2
[3, 4]
>>> ls2.pop(1)
4
>>> ls2
[3]
>>>
列表特点:
相关文章:
Day 03 python学习笔记
位运算 基于二进制的运算(计算机的底层基于位运算) 计算机最小单位:bit (比特/位/二进制) 1byte(字节) 8bit ( 0000 0000) &:与 (全真为真,一假则…...
优化类问题概述
数学建模系列文章: 以下是个人在准备数模国赛时候的一些模型算法和代码整理,有空会不断更新内容: 评价模型(一)层次分析法(AHP),熵权法,TOPSIS分析 及其对应 PYTHON 实现代码和例题…...
第一个 Go 程序“hello,world“ 与 main 函数
第一个 Go 程序"hello,world" 与 main 函数 文章目录 第一个 Go 程序"hello,world" 与 main 函数一.创建“hello,world”示例程序二. “hello,world” 程序结构拆解三、main 函数四、Go 语言中程序是怎么编译…...
MySQL缓冲池Buffer Pool
前言 在应用系统中,为加速数据访问,会把高频的数据放在「缓存」(Redis、MongoDB)里,减轻数据库的压力。在操作系统中,为了减少磁盘IO,同时为了快速响应,引入了「缓冲池」(buffer pool)机制。 MySQL…...
springboot实现发送邮箱验证码
准备工作 在邮箱官网开放SMTP授权,获取相应密钥,才可以进行发送邮件 这里以网易163邮箱为例,登录邮箱后,依次点击“设置-POP3/SMTP/IMAP” ,然后开启SMTP服务。这时候会提示一个授权码,例如:H…...
ESP8266使用记录(三)
通过udp把mpu6050数据发送到PC端 /********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : ESP8266WiFiUdp_12 团队/Team : 太极创客团队 / Taichi-Maker (w…...
基于微信小程序的在线视频课程学习平台设计与实现(源码+lw+部署文档+讲解等)
文章目录 前言用户微信端的主要功能有:管理员的主要功能有:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉…...
CloudCompare 二次开发(15)——点云添加高斯噪声
目录 一、概述二、代码集成三、结果展示一、概述 不依赖任何第三方点云相关库,使用CloudCompare编程实现点云添加高斯噪声。添加高斯噪声的算法原理见:PCL 点云添加高斯噪声并保存。 二、代码集成 1、mainwindow.h文件public中添加: void doActionAddGassNoise(); //…...
一波免费、好用的API接口分享
全国快递物流地图轨迹查询:【H5物流轨迹、单号识别】通过物流单号和收寄件地址,自动评估物流时效,并在地图中展示包裹运输轨迹。包括顺丰、圆通、申通等主流快递公司。自动识别快递公司及单号,实时查询,稳定高效&#…...
Android App ~ LiveData
LiveData 两种更新数据方式 setValue(T value)postValue(T value) setValue()只能在主线程中调用,postValue()可以在任何线程中调用。 MutableLiveData 1.首先LiveData其实与数据实体类(POJO类)是一样的东西,它负责暂存数据. 2.其次LiveData其实也是一个观察者…...
全球第4大操作系统(鸿蒙)的软件后缀.hap
system exe 2022-12-01 04:38:38 首页 > 操作系统 145|0条评论 鸿蒙OS兼容已有安卓程序:这事不稀奇。 其实一个系统兼容另外系统的可执行程序并非新鲜事,比如linux下的wine和crossover可以兼容许多win系统的.exe程序。 作为回应,Wind…...
算法练习第六十四天
LCR 184. 设计自助结算系统 - 力扣(LeetCode) 总结:利用一个双端维护队列一个往后递减的队列,对头是最大值,每次进入一个新值时就一直和队尾元素比较将比新的值小的数排出,这样能保证留在队列中的数都是会…...
安卓系列机型 框架LSP 安装步骤 支持多机型 LSP框架通用安装步骤【二】
安卓玩机教程---全机型安卓4----安卓12 框架xp edx lsp安装方法【一】 低版本可以参考上个博文了解相关安装方法。 LSP框架优点 简单来说装lsp框架的优点在于可以安装各种模块。包括 但不限于系统优化 加速 游戏开挂等等的模块。大致相当于电脑的扩展油猴 Lspos…...
实现一个宽高自适应的正方形
.square {width: 10%;height: 10vw;background: tomato; }.square {width: 20%;height: 0;padding-top: 20%;background: orange; }.square {width: 30%;overflow: hidden;background: yellow; } .square::after {content: ;display: block;margin-top: 100%; }...
shell脚本命令
Shell命令是在类Unix操作系统中使用的命令行解释器(shell)中执行的命令。Shell命令可以用于执行系统命令、操作文件、进行文本处理、管理进程等。以下是一些常见的Shell命令: 1. ls:列出当前目录下的文件和文件夹。 2. cd&#x…...
Vue2023 面试归纳及复习(2)
1 vue3中的动态组件和KeepAlive组件 动态组件component <component>动态组件是一种可以根据数据变化而动态加载不同组件的方式。使用动态组件可以有效地减少代码复杂度,提高组件的复用性和灵活性。 动态组件通过一个特殊的属性is来实现动态加载,…...
idea 本地项目上传到 Git 步骤
第一步:菜单栏 VCS——>import into Version control——>Create git Repository——>弹出框找到选中自己项目——>点击Ok 第二步:选中项目右键 ——>git——>Add 文件会变成绿色表示成功 第三步:VCS——>commit——>ok 提交到…...
【从0学习Solidity】41. WETH
【从0学习Solidity】41. WETH 博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页,探索全栈开发…...
微信小程序的无限瀑布流写法
微信小程序的无限瀑布流实现总算做完了,换了好几种方法,过程中出现了各种BUG。 首先官方有瀑布流的插件(Skyline /grid-view),不是原生的我就不想引入,因为我的方块流页面已经搭好了,引入说不定…...
前有CAP理论,后有BASE理论,分布式系统理论基石
🧑💻作者名称:DaenCode 🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开…...
HTTP、TCP、SOCKET三者之间区别和原理
7层网络模型 网络在世界范围内实现互联的标准框架 7层为理想模型,一般实际运用没有7层 详细内容 HTTP属于7层应用层 BSD socket属于5层会话层 TCP/IP属于4成传输层 TCP/IP协议 三次握手 笔者解析: 第一次握手:实现第一步需要客户端主动…...
flutter项目中常用第三方模块
flutter项目中常用第三方模块 持续更新中序言关于第三方模块安装flutter_native_splash使用方式模块配置 flutter_localizations模块配置使用方式 get_storage模块配置使用方式 get模块配置使用方式 持续更新中 序言 本章介绍项目中常用第三方模块,方便快速构建项目…...
Android 混淆使用及其字典混淆(Proguard)
1.使用背景 ProGuard能够通过压缩、优化、混淆、预检等操作,检测并删除未使用的类,字段,方法和属性,分析和优化字节码,使用简短无意义的名称来重命名类,字段和方法。从而使代码更小、更高效、更难进行逆向工程。 Android代码混淆…...
laravel 阿里云短信发送
示例 一、安装 安装:composer require mrgoon/aliyun-sms dev-master 二、打开config/app.php,添加配置代码 1、‘providers’ 配置组下添加 Mrgoon\Aliyunsms\AliyunsmsServiceProvider::class, 2、‘aliases’ 配置组下添加 Aliyunsms>Mrgoon…...
算法----LRU缓存机制
题目 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返…...
基于springboot+vue的旅游系统(前后端分离)
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...
什么是堆栈和队列?如何实现它们?
堆栈(Stack)和队列(Queue)是两种常见的线性数据结构,用于组织和管理数据。它们分别具有不同的特点和用途。本文将详细解释堆栈和队列的概念、特点以及如何实现它们。 堆栈(Stack) 什么是堆栈&…...
编译器自动生成的构造函数
背景 作为一个C小白,最近在看深度解析对象模型的时候,发现一个很久以来的认知错误:编译器会为没有定义构造函数的class生成一个默认构造函数。其实这个观点是错误的,编译器只会在四种情况下生成。 相关知识 一定要明确一个事情…...
SpringSecurity - 认证与授权、自定义失败处理、跨域问题、认证成功/失败处理器
SpringSecurity 文章目录 SpringSecurity一、 简介二、快速入门2.1 maven坐标2.2 访问请求 三、认证与授权3.1 认证3.1.1 登录检验流程3.1.2 SpringSecurity 完整流程3.1.3 认证流程详解3.1.4 校验3.1.5 要解决的问题3.1.6 准备工作3.1.7 实现3.1.7.1 数据库校验用户3.1.7.1.1 …...
自定义映射resultMap
自定义映射resultMap 自定义映射resultMap 自定义映射resultMapresultMap处理字段和属性的映射关系字段名和属性名不一致的情况,如何处理映射关系?1、为查询的字段设置别名,和属性名保持一致2、核心配置文件(mybatis-config.xml)中设置一个全局配置3、使…...
沈丘做网站去哪里/138ip查询网域名解析
相信很多同学都听说过分布式锁,但也仅仅停留在概念的理解上,这篇文章会从分布式锁的应用场景讲起,从实现的角度上深度剖析redis如何实现分布式锁。 一、超卖问题 我们先来看超卖的概念: 当宝贝库存接近0时,如果多个买…...
做爰网站下载地址/google官网注册账号入口
原理 任意矩阵都有满秩分解Full rank factorization。也就是说不限于方阵,更不限于满秩矩阵。满秩分解用途很广,尤其是后期的对于广义逆的学习来说非常重要。 首先要搞清楚什么是满秩分解full rank factorization,假设矩阵为AAA,它的秩为…...
微信手机网站流程/seo网站关键词排名快速
一、变量的定义及基本使用 Python是一种动态类型的编程语言,它不需要在变量定义时指定数据类型。当你为一个变量赋值时,Python会自动判断变量的数据类型。 变量的定义及基本使用: 在Python中,变量就是一个可以存储任意数据类型的…...
免费建靓号网站/优秀的软文广告欣赏
1460. 通过翻转子数组使两个数组相等 给你两个长度相同的整数数组 target 和 arr 。每一步中,你可以选择 arr 的任意 非空子数组 并将它翻转。你可以执行此过程任意次。 如果你能让 arr 变得与 target 相同,返回 True;否则,返回 …...
wordpress爬取豆瓣电影简介/桔子seo查询
Nginx日志的默认路径 /var/log/nginx/ 重启nginx service nginx restart 检查文件是否有问题 nginx -t 配置文件生效 nginx -s reload...
重庆建设工程造价管理协会网站/长沙网站seo排名
文章目录[点击展开](?)[] Unity中foreach会增加GC unity中for效率比foreach高? 在unity中使用foreach遍历集合会增加gc alloc,参考的话题:作为Unity3D的脚本而言,c#中for是否真的比foreach效率更高? foreach造成gc al…...