Python学习(二)

目录

  • python数据容器
    • 数据容器入门
    • 数据容器:list(列表)
    • list的遍历
    • 数据容器:tuple(元组)
    • 数据容器:str(字符串)
    • 数据容器的切片
    • 数据容器:set(集合)
    • 数据容器:dict(字典、映射)
    • 数据容器的通用操作
  • python函数进阶
    • 函数的多返回值
    • 函数的多种传参方式
    • 匿名函数
  • python的文件操作
    • 文件的编码
    • 文件的读取
    • 文件的写入
    • 文件的追加

python数据容器

数据容器入门

  • python数据类型:一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素,每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。
  • 数据容器根据特点的不同进行分类
    • 是否支持重复元素
    • 是否可以修改
    • 是否有序
  • 数据容器的五类:
    • 列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)

数据容器:list(列表)

  • 列表的定义
    • 列表内的每一个数据,称之为元素
    • []作为标识
    • 列表内每一个元素之间用,隔开
    • 列表可以一个存储多个数据,且可以为不同的数据类型,支持嵌套。

  • 列表的下标索引

  • 列表的常用操作方法
    • 方法和函数功能一样,有传入参数,有返回值,只是方法的使用格式不同

      • 方法的使用:student = Student()
        num = student.add(1, 2)
    • 列表的查询功能

      • 功能:查找指定元素在列表中的下标,如果找不到,会报错ValueError
        • 语法:列表.index(元素),index就是列表对象(变量)内置的方法(函数)
      • 功能:统计某元素在列表中的数量
        • 语法:列表.count(元素)
      • 功能:统计列表内,有多少元素
        • 语法:len(列表)
    • 列表的修改功能

      • 功能:修改特点位置(索引)的元素值
        • 语法:列表[下标] = 值
      • 功能:插入元素
        • 语法:列表.insert(下标,元素),在指定的下标位置,插入指定的元素
      • 功能:追加单个元素
        • 语法:列表.append(元素),将指定元素,追加到列表的尾部
      • 功能:追加一批元素
        • 语法:列表.extend(其他数据容器),将其他数据容器的内容取出,依次追加到列表尾部
      • 功能:元素的删除
        • 语法1:del 列表[下标]
        • 语法2:列表.pop(下标)
      • 功能:删除某元素在列表中的第一个匹配值
        • 语法:列表.remove(元素)
      • 功能:清空列表内容
        • 语法:列表.clear()

  • 列表的特点
    • 可以容纳多个元素
    • 可以容纳不同类型的元素
    • 数据是有序存储的(有下标序号)
    • 允许重复数据存在
    • 可以修改(增加或删除元素等)

list的遍历

  • 使用while循环对列表进行遍历

  • 使用for循环来遍历列表

数据容器:tuple(元组)

  • 元组一旦定义完成,就不可以被修改
  • 使用小括号定义变量
  • 元组定义单个元素的时候,后面需要加上一个括号

  • index():查找某个元素,如果数据存在返回对应的下标,否则报错
  • count():统计某个数据在当前元组出现的次数
  • len(元组):统计元组内的元素个数

  • 元组的遍历:while
  • 元组的遍历:for

  • 注意事项
    • 不可以修改元素的内容,否则会报错
    • 可以修改元组内的list的内容(修改元素、增加、删除、反转等)

数据容器:str(字符串)

  • 字符串也是支持下标索引的
  • 字符串是无法修改的数据容器
  • index():与前面的index是一样的
  • 字符串的替换
    • 语法:字符串.replace(字符串1,字符串2)
    • 功能:将字符串内的全部:字符串1替换为字符串2
    • 注意:不是修改字符串本身,而是得到一个新字符串
  • 字符串的切割
    • 语法:字符串.split(分隔符字符串)
    • 功能:按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中
    • 注意:字符串本身不变,而是得到了一个列表对象
  • 字符串的规整操作(去前后指定字符串)
    • 语法:字符串.strip(字符串)
    • 不传入参数默认去掉首尾空格

  • 统计字符串中某字符出现的次数:count()
  • 字符串的长度:len()
  • 遍历字符串:跟上面的一样

数据容器的切片

  • 序列:内容连续、有序、可使用下标索引的一类数据容器
  • 列表、元组、字符串都可以视为序列
  • 切片:
    • 概念:从一个序列中,取出来一个子序列
    • 语法:序列[起始下标:结束下标:步长]
    • 表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列

数据容器:set(集合)

  • 集合最大的特点结束不支持重复元素,并且内容是无序的

  • 语法:使用{}

  • 集合的常用操作-修改

    • 集合是无序的,所以集合不支持下标索引访问,但是集合和列表一样,是允许被修改的
    • 添加新元素
      • add:集合.add(元素)
    • 移除元素
      • remove:集合.remove(元素)
    • 从集合中随机取出元素
      • pop:集合.pop()
      • 结果:会得到一个元素的结果,同时集合本身被修改,元素被移除。
    • 清空元素
      • clear:集合.clear()
  • 集合的常用操作

    • 取出两个集合的差集
      • 语法:集合1.difference(集合2)
      • 功能:取出集合1和集合2的差集(集合1有而集合2没有的)
      • 结果:得到一个新集合,集合1和集合2不变
    • 消除两个集合的差集
      • 语法:集合1.difference_update(集合2)
      • 功能:对比集合1和集合2,在集合1内,删除和集合2相同的元素
      • 结果:集合1被修改,集合2不变
    • 两个集合合并
      • 集合.union(集合2)
      • 功能:将集合1和集合2组合成新集合
      • 结果:得到新集合,集合1和集合2不变
    • 统计集合元素数量len
      • len(集合)
  • 遍历

    • 集合不支持下标索引,不能使用while循环

数据容器:dict(字典、映射)

  • 字典的定义
    • 可以使用字典,实现用key取出value的操作
    • 定义:使用{},不过存储的元素是一个个的键值对,dict也可以定义
    • 不可以使用下标索引,通过key值去得到value值
    • 字典的key和value可以是任意数据类型(key不可以为字典)

  • 字典的常用操作
    • 新增元素
      • 语法:字典[key]=value
      • 结果:字典被修改,新增了元素
    • 更新元素
      • 语法:字典[key]=value
      • 结果:字典被修改,元素被更新
      • 注意:字典key不可以重复,所以对已存在的key进行上述操作,就是更新value的值
    • 删除元素
      • 语法:字典.pop(key)
      • 结果:获取指定key的value,同时字典被修改,指定key的数据被删除
    • 清空元素
      • 字典.clear()
    • 获取全部key
      • 语法:字典.keys()
      • 结果:得到字典中的全部key
    • 获取字典的元素数量
      • len()

  • 字典的特点总结:
    1. 可以容纳多个数据
    2. 可以容纳不同类型的数据
    3. 每一份数据都是key-value的键值对
    4. 可以通过key获取value,key不可重复(重复会覆盖)
    5. 不支持下标索引
    6. 可以修改(增加或删除更新元素)

数据容器的通用操作

  • 遍历上:
    • 五类数据容器都支持for循环
    • 只有列表、元组、字符串支持while循环,集合、字典不支持
  • len(容器)
  • max(容器):最大元素
  • min(容器):最小函数
  • 容器的通用转换功能
    • list(容器):将给定容器转换为列表
    • str(容器):将给定容器转换为字符串
    • tuple(容器):将给定容器转换为元组
    • set(容器):将给定容器转换为集合
  • 容器通用排序
    • sorted(容器,[reverse=True]):将给定容器进行排序
    • reverse表示反转
    • 排序的结果会变成列表对象

python函数进阶

函数的多返回值

  • 函数的多返回值的数据类型没有要求

函数的多种传参方式

  • 函数参数种类
    • 位置参数:
      • 调用函数时根据函数定义的参数位置来传递参数
      • 注意:顺序和个数必须一致
    • 关键字参数:
      • 函数调用时通过键=值的方式传参
      • 函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序
    • 缺省参数:
      • 也叫默认参数,用于定义函数,为参数提供默认值,调用时可以不传则会以默认值传入
      • 设置默认值的参数必须放在后面
    • 不定长参数:
      • 也叫可变参数,用于不确定调用的时候会传递多少个参数(不传参也可以)
      • 不定长参数的类型
        • 位置传递:使用*
        • 关键字传递:使用**

匿名函数

  • 函数作为参数传递
    • 将函数自身传递到其他函数内
    • 函数传入的作用:传入计算逻辑,而非传入数据

  • lambda匿名函数
    • 函数定义的类型:
      • def关键字,定义带有名称的函数,可以重复使用
      • lambda关键字,可以定义匿名的函数(无名称),只可以临时使用一次
    • 匿名函数的定义语法:
      • lambda 传入参数:函数体(一行代码)

python的文件操作

文件的编码

  • 常用的编码:UTF-8、GBK

文件的读取

  • 文件的操作主要包括打开、关闭、读、写等操作
  • 打开文件:open(name,mode,encoding)
    • name:是要打开的目标文件的字符串(可以包含文件所在的具体路径)
    • mode:设置打开文件的模式(访问模式):只读(r)、写入(w)、追加(a)
    • encoding:编码格式
  • 读操作相关方法
    • read()方法:文件对象.read(num)
      • num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。
    • readlines()方法:
      • 读取多行内容
      • 可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素
    • readline()方法
      • 一次读取一行内容
    • for循环读取文件行
    • close():关闭文件对象
    • with open语法:自动完成对文件的close

文件的写入

  • write():文件写入
  • flush():内容刷新
  • 注意:
    • w模式,文件不存在,会创建新文件
    • w模式,文件存在,会清空原有文件
    • close()方法,带有flush()方法的功能

文件的追加

  • 模式替换为a
  • 文件存在会追加
  • 文件不存在会创建文件
  • 可以使用”\n”来写入换行符

第二部分学完了,继续加油……

如果文章有何不妥之处,请您指出。持续更新中……