2022-11-11 Python基础知识

  • 可变字符串 io.StringIO(a)
    • 由于字符串是不可变序列,修改的话会生成新对象,使用io模块可以直接修改字符串对象,用于需要经常修改的字符串
    • 需要先import io
    • sio = io.StringIO(s)
    • sio.seek(7)
    • sio.write('g')
    • sio.getvalue()

     

  • 位操作
    • 位与 &:全1才是1,其它都是0
    • 位或 |:有1就是1,全0才是0
    • 位异或 ^:不同就是1,相同就是0
  • 移位
    • a = 3
    • a << 1:左移1位,相当于a乘以2的1次方
    • a >> 3:右移3位,相当于a除以2的3次方
    • 特点是比乘除法快
  • 加法
    • 数字:相加
    • 字符串:拼接
    • 列表、元组:合并
  • 乘法:
    • 数字:相乘
    • 字符串、列表、元组:复制多次
  • 复合赋值运算
    • 加等 a = a + 1 → a += 1
  • 运算优先级
    • 乘除 → 加减
    • 位运算、算术运算 → 比较运算 → 赋值运算
    • 积极使用小括号
  • 列表的特点
    • 可变(大小和内容都可变)
    • 元素的类型可以不同
    • 列表对象a,储存的是序列对象的地址,序列对象存储的是元素对象的地址

       

  • 列表-创建的方式
    • 方括号:a = [10,20,30]
    • list():将可迭代对象直接转成列表
      • list("abcd")
      • list("range(10)"),创建一个整数列表,range()直接创建的是一个range对象
    • 推导式生成列表
      • a = (x*2 for x in range(11))
      • 生成的直接就是列表,不用list()转换
  • 列表-添加元素的方法
    • append():最推荐,原地修改,尾部添加
      • a.append(待添加的内容)
    • extend():原地修改,尾部添加可迭代对象
      • a.extend(待添加的可迭代对象)
    • insert():指定位置,插入元素;插入位置后的内容都会被拷贝,效率下降
      • a.insert(指定位置,待添加的内容)
    • 加号添加:不推荐,是复制原列表和待添加列表形成新列表
      • c =a+b
    • 乘号扩展:原列表元素的多次重复
      • b = a*3
  • 列表删除的3种方式(本质全部是拷贝)
    • del()
      • del a[0]
      • 删除列表a中0号位置的元素,0号以后的元素复制一遍,再向前拷贝
      • 不指定位置就是删除整个列表
    • pop()
      • b = a.pop(需要弹出的元素的位置)
      • 默认是弹出最后一个位置的元素
    • remove()
      • b = a.remove('x')
      • 删除首次出现的指定字符,不存在的话就抛异常
  • 列表-访问和计数
    • index()
      • a.index(指定访问元素值),返回指定元素首次出现的位置
    • count()
      • a.count(指定计数的元素值),返回指定元素在列表中出现的次数
    • len()
      • len(a)获得列表长度
    • in、not in成员资格判断
      • 10 in a,返回True或False
      • 10 not in a,返回True或False
      • a.count(10),返回0或大于0
  • 列表-切片
    • 和字符串一样[起始位置:终止位置:步长]
  • 列表的遍历
    • for x in a
      • print x
  • 列表排序
    • sort(),不新建列表,原地修改
      • a.sort(),默认升序
      • a.sort(reverse=True),降序
    • sorted(),新建列表排序
      • b = sorted(a, reverse=True)
    • random(),乱序,原地修改
      • import random
      • random.shuffle(a)
    • reversed(),返回迭代器
      • b = list(reversed(a))
    • max(),返回最大值
    • min(),返回最小值
    • sum(),数值型列表中元素相加求和
  • 二维列表
    • a = [[a,b],[c,d],[e,f],[g,h]]
    • a[1][1],返回d
    • 嵌套循环打印二维列表a
      • 外面的循环是外层的位置编号
        • 内部的循环是第二层的位置编号,需要打印制表符
      • 外部循环一次,需要打印换行符
  • 元组-特点
    • 不可变序列
  • 元组的创建
    • 小括号直接创建,小括号可以省略
      • 如果只有一个元素,小括号不可以省略,且元素后需要加逗号,否则不会被识别成元组
        • b = (10,) 没有逗号也会被识别为整型
    • tuple(),将可迭代对象转变为元组
      • b = tuple(),创建一个空元组对象
      • b = tuple('abc')
      • b = tuple(range(5))
      • b = tuple([1,2,3])
  • 元组的访问
    • 定位访问:a[1],跟字符串和列表一样
    • 切片访问:跟字符串列表一样
  • 元组-排序
    • 由于不可以修改,所以只能用sorted()来创建新列表进行排序
      • b = sorted(a)
  • 元组-zip
    • zip(),将多个列表对应位置的元素组合成元组,返回一个zip对象
  • 元组-生成器推导式
    • 生成器推导式生成的是一个生成器对象,且只能调用一次
    • 可用s.__next__()来逐次调用指针
      • 但我现在还不知道有什么用

     

  • 元组的特点
    • 不可变序列
    • 比列表访问和处理速度快
    • 可以作为字典的键(整数、字符串也可以),虽然我也不知道怎么样,但列表不可以作为字典的键
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值