Python笔记--第一周

#三月十六日
计算机基础知识
冯.诺依曼:
一:提出二进制
二:提出冯.诺伊曼体系:
计算机分为五大部件控制器、运算器、存储器、输入设备、输出设备。

控制器:用于完成各种算数运算、逻辑运算和数据传送等数据加工和处理。

运算器:用于控制程序的执行,是计算机的大脑。运算器和控制器组成计算机的中央处理器(cpu)。控制器根据存储在存储器中的指令序列(程序)进行工作,并由一个程序计数器控制指令的执行。控制器具有判断能力,能根据计算结果选择不同工作流程。

存储器:用于记忆程序和数据,例如:内存。程序和数据以二进制代码形式不加区别的放在存储器中,存放位置由地址确定。内存是掉电易失设备。

输入设备:用于将数据或程序输入计算机设备中,例如:鼠标和键盘。

输出设备:将程序或数据的处理结果展示给用户。例如:显示器、打印机。

CPU中还有寄存器和多级缓存cache。

cpu运行频率最快,内存次之,io极慢。
五大部件关系示意图
解释器
Python源代码写好后需要经过解释器编译成中间字节码,最后在解释器上执行。
一般用ipython


python基础语法

注释:#标注的文本。

数字
一、进制
二进制0b:由零和一组成,逢二进一。
八进制0o:可由三位二进制组成。
十进制10
十六进制0x:可由四位二进制数组成。由a.b.c.d.e.f表示10到15.

二、浮点数flot:小数

三、复数complex:1+2j或1+2J

字符串

一、使用单双引号引用的字符序列。
二、单双三引号可以跨行、可以在其中自由的使用单双引号。
三、r前缀:在字符串前面加上r或者R前缀,表示该字符串不做特殊处理。
四、f前缀:格式化字符串。

转义序列

一、转义:在需要转移的字符串前加斜杠。
二、前缀r:把里面的所有字符当普通字符对待,转义字符也不在转义。

缩进

未使用C语言的花括号,而是采用缩进的方式表示层次关系。通常使用四个空格缩进。

续行

一、在行尾使用\,注意\之后除了紧跟着换行之外不能有其他字符。
二、如果使用各种括号,认为括号内是一个整体,其内部跨行不容\。

标识符

一、一个名字用来指定一个值。
二、只能是字母、下划线和数字。
三、只能以字母或下划线开头。
四、不能是python的关键字,例如def、class就不能作为标识符。
五、python是大小写敏感的。

标识符的约定
一、不允许使用中文,也不建议拼音。
二、不要使用歧义单词,例如class。
三、在python中不要随意使用下划线开头的标识符。

语言类型

python是动态强类型语言。

动态语言
一、不用事先声明语言类型,随时可以赋值为其他类型。
二、编程时不知道是什么类型很难推断。

强类型语言
一、不同类型语言之间的操作必须先强制类型转换为同一类型。

进制转换

一、二进制与十进制的相互转换

  • 二进制转十进制
    小数点前或整数从右到左用二进制的每个数乘以二的相应次方
    小数点后或整数从左到右用二进制的每个数乘以二的相应次方

  • 十进制转二进制(整数)
    除以二取余逆序排列

  • 十进制转二进制(小数)
    乘二取余顺序排列

二、二进制与八进制互相转换

  • 二进制转八进制

  • 取三合一法
    从二进制的小数点为分界点,向左(右)每三位取成一位,然后按权相加,小数点位置不变,所得数字按顺序排列。无法凑足添零。

  • 八进制转二进制
    取一分三法
    将一个八进制的数分成三个二进制数顺序排列

三、二进制与十六进制的相互转化

  • 二进制装十六进制
    取四合一法(同上)

  • 十六进制转二进制
    取一分四法(同上)

##三月十七日
原码反码与补码

  • 原码:所有进制数的二进制表达

  • 反码:正数的反码与原码相同,负数的反码符号位不变其余按位取反

  • 补码:正数的补码与原码相同,负数的不嘛符号位不变,其余按位取反后加一

  • 补码的补码就是原码

False等价

在这里插入图片描述

逻辑运算

在这里插入图片描述
算术运算符

  • +、-、*、/、//(向下取整除)、%(取模)、**(幂)

位运算符

  • &位与、|位或、^异或、<<左移、>>右移
  • ~按位取反,包括符号位

比较运算符

  • 必须是同类型比较
  • 返回一个布尔值
  • ==、!=、>、>=、<、<=

逻辑运算符

  • and与、or或、not非
  • and如果前面的表达式等价为False,后面就没有必要计算了,这个逻辑表达式最终一定等价位False
  • or如果前面的表达式为True,后面没有必要计算了这个逻辑表达式最终一定等价位False
  • 返回值不一定是bool型
  • 一般把短路条件放在最前面可以大大减少计算量

赋值运算符

  • =
  • 赋值即定义

运算符优先级

在这里插入图片描述

内建函数

  • int
    将其他数值转化为整形
    在这里插入图片描述

  • str
    将其他数值转化为字符串,方便人的阅读

  • type
    查看数值类型

在这里插入图片描述

  • isinstance
    是否是后面指定的那个类型的数据

在这里插入图片描述

  • input(“请输入数据”)
    返回你输入的字符,类型是字符串
    在这里插入图片描述

  • print
    打印所有的类型。默认sep = “ ”,end = “\n”

  • flot
    将字符串整形转换为浮点数
    在这里插入图片描述

  • pow
    前面数的后面数的次方
    math.pow返回浮点数
    pow返回整形
    一般直接用幂表示
    在这里插入图片描述
    在这里插入图片描述

  • max
    取最大值,只能同类型比较
    在这里插入图片描述

  • 取整

  • //
    向下取整

  • int
    只截取整数部分

  • math.ceil
    向上取整
    在这里插入图片描述

  • round
    圆整四舍六入五取偶
    在这里插入图片描述

基础语法

  • if
    单分支

在这里插入图片描述
多分支
在这里插入图片描述

  • 多分支结构只要有一个分支被执行,其他分支都不会执行

  • 前一个条件被测试过,下一个条件相当于隐含着这个条件

  • while
    一般用在死循环中,如while True
    条件满足时进入循环直到条件不满足为止

  • for
    遍历容器中的所有元素不重复地取一边
    后一般跟可迭代对象如range函数、列表
    在这里插入图片描述
    在这里插入图片描述

###三月二十日

线性数据结构

  • 线性表
    在这里插入图片描述
  • 顺序表
    在这里插入图片描述
  • 链表
    在这里插入图片描述
  • 列表list
    在这里插入图片描述
  • 空列表得到方式
    l1 = 【】
    l2 = list()括号内必须是可迭代参数
  • 列表的索引
    列表名称+中括号+序号(列表内默认从零开始排序)
    列表索引可以正数也可以倒数,倒数从负一开始
    索引序号不可超界
    索引效率很高,时间复杂度为O1

在这里插入图片描述

  • 查询
  • index
    如果找到返回一个值的索引(序号)找不到报错

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
遍历所有值,查询效率为On,数据庞大尽量不用

  • count
    返回值在列表中存在的个数
    在这里插入图片描述
    在这里插入图片描述
    遍历所有值,查询效率为On,数据庞大尽量不用
  • len
    查询列表长度
    在这里插入图片描述
    在这里插入图片描述
    修改

在这里插入图片描述
增加元素

  • append
    内部尾部追加
    在这里插入图片描述
    在这里插入图片描述
    尾部追加如果内存中地方不够会自动扩容,扩容两倍
    扩容耗时牵扯到垃圾回收 效率低不扩容是效率高时间复杂度O1

  • insert
    在某个值前面插入值(可以是任意形式)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 增加多个值

  • extend
    后面加可迭代对象,默认尾部添加
    在这里插入图片描述
    在这里插入图片描述

  • 删除
    remove
    移除某个值
    在这里插入图片描述

在这里插入图片描述
效率较低 尽量少用

  • pop
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    pop():尾部移除

  • clear
    清除列表所有内容
    在这里插入图片描述
    在这里插入图片描述

  • 反转

  • reverse
    建列表元素反转,倒序排列。基本没用。

  • 排序

  • sort

  • 默认升序排列

  • 在这里插入图片描述
    加revers = True表示降序
    在这里插入图片描述
    只支持同类型排序,不同类型需要转换成同一类型在进行排序
    在这里插入图片描述

  • in成员操作
    遍历效率不高
    在这里插入图片描述

列表的组合

  • “+”、“*”
    加法
    在这里插入图片描述
    在这里插入图片描述
    乘法
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 浅层拷贝

  • 如果修改地址后面的数字,其它索引引用被修改后的地址
    在这里插入图片描述
    在这里插入图片描述
    把【1】地址后的数字修改为【100】
    这里的【1】是一个地址
    所有的【1】都指向一个地址
    所以b = 【【100】【100】【100】】

  • 复制
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    copy后生成一个新的地址
    在这里插入图片描述

  • stack栈
    后进先出,队尾操作

  • queue 队列
    先进先出FIFO,链表i效率更高
    后进先出LIFO,列表和链表都一样
    栈和队列中间都不操作只有队首何队尾操作

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值