Python基础三天入门(第二天)

Python基础三天入门(第二天)

Python基础入门系列主要总结Python相对于Java语法区别
参考资料:
https://www.bilibili.com/video/BV1wD4y1o7AS?p=99&spm_id_from=pageDriver&vd_source=dd9bdf6f42e38406b07ef92b986e8171

列表

  1. 列表的创建与删除
  • 列表的创建方式
    • 使用中括号[],元素之间使用英文的逗号进行分隔
    • 调度内置函数list()
  1. 列表的查询操作
  • 获取列表中指定元素的索引 – index()
    • 如果列表中存在N个相同元素,只返回相同元素的第一个元素的索引
    • 如果查询的元素在列表中不存在,则会抛出ValueError
    • 还可以在指定的start和stop之间进行查找
  • 获取列表中的单个元素
    • 正向索引从0到N-1
    • 逆向索引从-N到-1
    • 指定索引不存在,抛出IndexError
  • 获取列表中的多个元素 – 切片操作
    • 切片的结果:原列表片段的拷贝
    • 切片的范围:[start,stop]
    • step默认为1:简写为[start:stop]
    • step为正数:从start开始往后计算切片
      [:stop:step]:切片的第一个元素默认是列表的第一个元素
      [start::step]:切片的最后一个元素默认是列表的最后一个元素
    • step为负数:从start开始往前计算切片
      [:stop:step]:切片的第一个元素默认是列表的最后一个元素
      [start::step]:切片的最后一个元素默认是列表的第一个元素
  • 判断指定元素在列表中是否存在
    • 元素 in 列表名
    • 元素 not in 列表名
  • 列表元素的遍历
    for 迭代变量 in 列表名
  1. 列表元素的增、删、改操作
  • 列表元素增加操作
    • append():在列表的末尾添加一个元素
    • extend():在列表的末尾至少添加一个元素
    • inset():在列表的任意位置添加一个元素
    • 切片:在列表的任意位置添加至少一个元素
  • 列表元素的删除操作
    • remove():一次删除一个元素;重复元素只删除一个;元素不存在抛出ValueError
    • pop():删除一个指定索引位置上的元素;指定索引不存在抛出IndexError;不指定索引,删除列表中最后一个元素
    • 切片:一次至少删除一个元素
    • clear():清空列表
    • del:删除列表
  • 列表元素的修改操作
    • 为指定索引的元素赋予一个新值
    • 为指定的切片赋予一个新值
  1. 列表元素的排序
  • 调用sort()方法,列表中的所有元素默认按照从小到大的顺序进行排序,可以指定reverse=True,进行降序排序
  • 调用内置函数sorted(),可以指定reverse=True,进行降序排序,原列表不发生改变
  1. 列表生成式
variable    =    [out_exp    for    out_exp    in    input_list    if    out_exp    ==    2]

生成11,22,… 10*10

6. 列表的特点

  • 列表元素按顺序有序排序
  • 索引映射唯一个数据
  • 列表可以存储重复数据
  • 任意数据类型混存
  • 根据需要动态分配和回收内存

字典

  1. 什么是字典
  • Python内置的数据结构之一,与列表一样是一个可变序列
  • 以键值对的方式存储数据,字典是一个无序的序列
  1. 字典的原理
  • 类似于Java中的map
  1. 字典的创建
  • 最常用的方式:使用花括号{}
  • 使用内置函数dict()
  1. 字典的查询操作
  • []取值:如果字典中不存在指定的key,抛出keyError异常
  • get()取值:如果字典中不存在指定的key,并不会抛出KeyError而是会返回None,可以通过参数设置默认的value,以便指定的key不存在时返回
  1. 字典元素的增、删、改操作
  • key的判断
    • in 指定的key在字典中存在返回True
    • not in 指定的key在字典中不存在返回True
  • 字典元素的删除
    • del scored[‘张三’]
  • 字典元素的新增
    • scores[‘Jack’]=90
  • 获取字典视图的三种方法
    • keys():获取字典中所有的key
    • value():获取字典中所有的value
    • items():获取字典中所有的key,value对
  1. 字典的特点
  • 字典中的所有元素都是一个key-value对,key不允许重复,value可以重复
  • 字典中的元素是无序的
  • 字典中的key必须是不可变对象
  • 字典也可以根据需要动态地伸缩
  • 字典会浪费较大的内存,是一种使用空间换时间的数据结构
  1. 字典生成式
  • 内置函数zip():用于将可迭代的对象作为参数,将对象对一个的元素打包成一个元组,然后返回由这些元组组成的列表

元组

  1. 什么是元组
  • Python内置的数据结构之一,是一个不可变序列
  • 不可变序列与可变序列
    • 不可变序列:字符串、元组;没有增、删、改操作
    • 可变序列:列表、字典;可以对序列执行增、删、改操作,对象地址不发生更改
  1. 元组的创建
  • 直接小括号()
  • 使用内置函数tuple()
  • 只包含一个元组的元素需要使用逗号和小括号
  1. 元组设计成不可变序列
  • 在多任务环境下,同时操作对象时不需要加锁
  • 在程序中尽量使用不可变序列
  1. 注意事项
  • 元组中存储的是对象的引用
    • 如果元组中对象本身不可变对象,则不能再引用其他对象
    • 如果元组中的对象是可变对象,则可变对象的引用不允许改变,但数据可以改变
  1. 元组的遍历
  • 元组是可迭代对象,可以使用for…in进行遍历

集合

  1. 什么是集合
  • Python语言提供的内置数据结构
  • 与列表、字典一样都属于可变类型的序列
  • 集合是没有value的字典
  1. 集合的创建
  • 直接{}
  • 使用内置函数set()
  1. 集合的增、删、改、查操作
  • 集合元素的判断
    • in
    • not in
  • 集合元素的新增操作
    • add():一次添加一个元素
    • update():至少添加一个元素
  • 集合元素的删除操作
    • remove():一次删除一个指定元素,如果指定元素不存在抛出keyError
    • discard():一次删除一个指定元素,如果指定的元素不存在不抛出异常
    • pop():一次只删除一个任意元素
    • clear():清空集合
  1. 集合的关系
  • 两个集合是否相等==或!=
  • 一个集合是否是另一个集合的子集issubset
  • 一个集合是否是另一个集合的超集issuperset
  • 两个集合是否没有交集isdisjoint
  1. 集合的数学操作
  • 交集
  • 并集
  • 差集
  • 对称差集
  1. 集合生成式
  • 相对列表生成式,将[]改为{}即可
variable    =    {out_exp    for    out_exp    in    input_list    if    out_exp    ==    2}

字符串

  1. 字符串的驻留机制
  • 字符串是Python中的基本数据类型,是一个不可变的字符序列
  • 字符串驻留机制:仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串的驻留池中,Python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把字符串的地址赋给新创建的变量
  • 驻留机制的几种情况(交互模式)
    • 字符串的长度为0或1时
    • 符合标识符的字符串
    • 字符串只在编译时进行驻留,而非运行时
    • [-5,256]之间的整数数字
  • sys中的intern方法强制2个字符串指向同一个对象
  • Pycharm对字符串进行优化处理
  • 字符串驻留机制的优缺点
    • 当需要值相同的字符串时,可以直接从字符串池里拿来使用,避免频繁的创建和销毁,提升效率和节约内存,因此拼接字符串和修改字符串是会比较影响性能的
    • 在需要进行字符串拼接时建议使用str类型的join方法,而非+,因为join()方法是先计算出所有字符串的长度,然后再拷贝,只new一次对象,效率要比"+"效率高
  1. 字符串的常用操作
  • 查询操作
    • index():查找子串substr第一次出现的位置,如果查找的子串不存在时,则抛出ValueError
    • rindex():查找子串substr最后一次出现的位置,如果查找的子串不存在时,则抛出ValueError
    • find():查找子串substr第一次出现的位置,如果查找的子串不存在时,则返回-1
    • rfind():查找子串substr最后一次出现的位置,如果查找的子串不存在时,则返回-1
  • 大小写转换
  • upper():把字符串中所有的字符都转成大写字母
  • lower():把字符串中所有的字符都转成小写字母
  • swapcase():把字符串中所有的大写字母转成小写字母,把所有的小写字母转成大写字母
  • capitalize():把第一个字符转换成大写,把其余字符转换成小写
  • title():把每个单词的第一个字符转换成大写,把每个单词的剩余字符转换成小写
  • 对齐操作
    • center():居中对齐
    • ljust():左对齐
    • rjust():右对齐
    • zfill():右对齐,左边用0填充
  • 字符串劈分
  • split()
    • 从字符串的左边开始劈分,默认的劈分字符时空格字符串,返回值都是一个列表
    • 以通过参数sep指定劈分字符串是的劈分符
    • 通过参数maxsplit指定劈分字符串时的最大劈分次数,在经过最大次劈分后,剩余的子串会单独做为一部分
  • rsplit()
    • 从字符串的右边开始劈分,默认的劈分字符是空格字符串,返回值都是一个列表
    • 以通过参数sep指定劈分字符串是的劈分符
    • 通过参数maxsplit指定劈分字符串时的最大劈分次数,在经过最大劈分次数后,剩余的子串会单独做为一部分
  • 字符串判断
    • isidentifier():判断指定的字符串是不是合法的标识符
    • isspace():判断指定的字符串是否全部由空白字符组成
    • isalpha():判断指定的字符串是否全部由字母组成
    • isdecimal():判断指定的字符串是否全部由十进制的数字组成
    • isnumeric():判断指定的字符串是否全部由数字组成
    • isalnum():判断指定字符串是否全部由字母和数字组成
  • 字符串替换
    • replace():第一个参数指定被替换的子串,第二个参数指定替换子串的字符串,该方法返回替换后得到的字符串,替换前的字符串不发生变化,调用该方法时可以通过第3个参数指定最大替换次数
  • 字符串合并
    • join():将列表或元组中的字符串合并成一个字符串
  1. 字符串的比较
  • 运算符
    • ,>=,<,<=,==,!=

  • 比较规则
    • 首先比较两个字符串中的第一个字符,如果相等则继续比较下一个字符,依次比较下去,直到两个字符串中的字符不相等时,其比较结果就是两个字符串的比较结果,两个字符串中的所有后续字符将不再被比较
  • 比较原理
    • 两个字符进行比较时,比较的是其ordinal value(原始值),调用内置函数ord可以得到指定字符的ordinal value。与内置函数ord对应的是内置函数chr,调用内置函数chr时指定ordinal value可以得到其对应的字符
  1. 字符串的切片操作
  • 字符串是不可变类型,不具备增、删、改等操作;
  • 切片操作将产生新的对象
  1. 格式化字符串
  • %作占位符
    • %s 字符串占位符
    • %i或%d 整数占位符
    • %f 浮点数占位符
  • {}作占位符
  1. 字符串的编码转换

函数

  1. 函数的创建和调用
  2. 函数的参数传递
  3. 函数的返回值
  4. 函数的参数定义
  5. 变量的作用域
  6. 递归函数

异常和bug

  1. bug的由来及分类
  • 粗心导致错误的自查宝典
    • 漏了末尾的冒号,如if语句,循环语句,else子句等
    • 缩进错误,该缩进的没缩进,不该缩进的瞎缩进
    • 把英文符号写成中文符号
    • 字符串拼接的时候,把字符串和数字拼在一起
    • 没有定义变量,比如while的循环条件的变量
    • “==”比较运算符和“=”赋值运算符的混用
  • 思路不清导致的问题解决方案
    • 使用print()函数
    • 使用“#”暂时注释部分代码
  1. 异常处理机制
  • try except
  • try except else
  • try except else finally
  1. 常见的异常类型
  • ZeroDivisionError
    • 除(或取模)零(所有数据类型)
  • IndexError
    • 序列中没有此索引(index)
  • KeyError
    • 映射中没有这个键
  • NameError
    • 未声明/初始化对象(没有属性)
  • SyntaxError
    • Python语法错误
  • ValueError
    • 传入无效的参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值