Python学习笔记

Python 学习


  • 环境: Anaconda + VSC
  • # 单行注释, '''code'''多行注释

1. 数据类型

  • 字符串
    • 字符串中,正向序号从0开始递增,逆向序号从最后一个为-1开始向前递减
    • 索引:str[M]返回单个字符
    • 切片:str[M:N]返回子串
  • 集合:{ , },set()
    • 操作符
      • |并,-差,&交,^补,<=,<,>=,>(子集与包含)
    • 集合处理方法
      • S.add(x):如果x不在集合S中,将x增加到S
      • S.discard(x):移除S中元素x,如果x不在集合S中,不报错
      • S.remove(x):移除S中元素x,如果x不在集合S中,产生KeyError异常
      • S.clear():移除S中所有元素
      • S.pop():随机返回S中的一个元素,更新S,若S为空产生KeyError异常
      • S.copy():返回集合S的一个副本
      • len(S):返回集合S的元素个数
      • x in S:判断S中元素x,x在集合S中,返回True,否则返回False
      • x not in S:判断S中元素x,x不在集合S中,返回True,否则返回False
      • set(x):将其他类型变量x转变为集合类型
    • for in遍历集合元素时顺序可能不同
  • 序列类型(字符串,元组,列表)
    • 存在正向递增序号和反向递减序号
    • 通用操作符
      • x in s
      • x not in s
      • s + t:连接两序列s和t
      • s*n或n*s:将s序列复制n次
      • s[i]:索引
      • s[i:j]或s[i:j:k]
    • 通用函数
      • len(s):反回序列s的长度
      • min(s):返回序列s的最小元素,s中元素需要可比较
      • max(s):返回序列的最大元素,s中元素需要可比较
      • s.index(x)或s.index(x, i, j):返回序列s从开始到位置中第一次出现元素x的位置
      • s.count(x):返回序列s中出现x的总次数
    • 元组:( , ),tuple()
      • 创建后不可修改
    • 列表:[ , ],list()
      • 创建后可以修改
      • 两个列表用=进行复制后两个指向同一个内存
      • 使用保留字in判断是否在列表中str[-1] in ['C','c'],返回True或False
      • Is[i] =x:替换列表1s第i元素为x
      • Is[i:j:k] =lt:用列表lt替换s切片后所对应元素子列表
      • del Is[i]:删除列表Is中第i元素
      • del Is[i:j:k]:删除列表ls中第i到第j以k为步长的元素
      • Is += It:更新列表Is,将列表lt元素增加到列表ls中
      • Is *= n:更新列表Is ,其元素重复n次
      • Is.append(x):在列表1s最后增加一个元素x
      • Is.clear():删除列表ls中所有元素
      • Is.copy():生成一个新列表,赋值ls中所有元素
      • Is.insert(i,x):在列表ls的第i位置增加元素x
      • Is.pop(i):将列表ls中第位置元素取出并删除该元素
      • Is.remove(x):将列表ls中出现的第一个元素x删除
      • ls.reverse():将列表中的元素反转
      • sorted()排序
  • 字典:{ : , : },dict()
    • 空字典类型:{}
    • del d[k]:删除字典d中键k对应的数据值
    • k in d:判断键k是否在字典d中,如果在返回True,否则False
    • d.keys():返回字典d中所有的键信息
    • d.values():返回字典d中所有的值信息
    • d.items():返回字典d中所有的键值对信息
    • d.get(k, ):键存在,则返回相应值,不在则返回
    • d.pop(k, ):键k存在,则取出相应值,不在则返回
    • d.popitem():随机从字典d中取出一个键值对,以元组形式返回
    • d.clear():删除所有的键值对
    • len(d):返回元素个数

2. 语句与函数

  • 分支语句:if,elif,else,以:结尾if 条件 :

    • 代码样例

      if 判断条件 :
      	执行
      elif 判断条件 :
      	执行
      else :
      	执行
      

      同一个程序段(层次)内缩进要一样,且必须有缩进,最好tab,冒号不能丢.

    • 二分支结构紧凑形式:<表达式1> if <条件> else <表达式2>(类似于C语言的双目运算符,但顺序不一样)

    • 条件判断的操作符(<,<=,>=,>,==,!=,and,or,not)

  • 循环语句:for,while

    • for i in range(5):>>>循环0到4

      • range():
        • range(N):产生0到N-1的整数序列
        • range(M,N):M到N-1
    • while <条件> :
      	执行
      
    • break,continue

    • for和while的else语句(和break有关)

  • 异常处理:

    • #case1
      try:
      	<语句块1>
      except:
      	<语句块2>	#如果语句块1中出现异常就执行语句块2,否则不执行。
          
      #case2
      try:
      	<语句块1>
      except <异常类型>:
      	<语句块2>	#如果语句块1中出现指定类型异常就执行语句块2,否则不执行。
          
          
      #case3
      try:
      	<语句块1>
      except:
      	<语句块2>
      else:			#else对应语句块3在不发生异常时执行 
          <语句块3>
      finally:
          <语句块4>	#finally对应语句块4一定执行
      
  • 函数

    • #形式
      def <函数名>(<参数(0个或多个)>,<可选参数>(如m=1,没给就默认为1)):
          <函数体>
          return <返回值>
      
      #可变参数(数量不定)例子
      def fact(n, *b) : 
          s =1
          for i in range(1, n+1):
      		s *=i
          for item in b:
      		s *= item
      	return s
      fact(10, 3) >>> 10886400
      fact(10, 3, 5, 8) >>> 435456000
      
    • return可以返回0个或多个返回值

    • lambda函数

3. Python程序的输入输出

  • 输出

  • 输入

    • a=int(input("输入")) 没有强制类型转化的话输入123是字符串类型
  • 评估函数eval():将字符串最外层引号去掉(并执行)

    • eval("1") >> 1
    • eval("1+2")>>3
    • eval("'1+2'")>>'1+2'
    • eval('print("hello")')>>输出hello

4. import用法

  • import <库名>
    • 调用:<库名>.<函数名>
  • from <库名> import <函数名>(from <库名> impert *)
    • 调用:<函数名>,但是和自定义函数名重名时麻烦。
  • import <库名> as <别名>
    • 调用:<别名>.<函数名>

5. 数字类型及操作

  • 整数类型
    • 十进制
    • 二进制:0b或0B开头
    • 八进制:0o或0O开头
    • 十六进制:0x或0X开头
  • 浮点数
    • 存在不确定尾数(同C语言):0.1+0.2==0.3返回False,用round()
  • 复数
  • 操作符:+,-,,/(产生浮点数结果,不同于C语言),//(整除),-y(y的负值),%,**(幂运算,x**2==\(x^2\),x**0.5==\(\sqrt{x}\)​​​),+=,-=,=,/=,//=,%=,**=
  • 数值运算函数:
    • abs(x),x的绝对值
    • divmod(x,y):得到(x//y,x%y)
    • pow(x,y[,z]):得到(x**y)%z,[...]表示参数z可省略
    • max和min可以有很多个参数
    • int(),float(),complex()(变复数)

6. 字符串及其操作

  • 三单引号多行字符串
  • 索引和切片(上文有提及)
    • 字符串切片高级用法使用[M: N: K]根据步长对字符串切片
      • <字符串>[M: N],M缺失表示至开头,N缺失表示至结尾"〇一二三四五六七八九十"[:3]结果是"〇一二"
      • <字符串>[M: N: K],根据步长K对字符串切片“〇一二三四五六七八九十”[1:8:2]结果是"一三五七","〇一二三四五六七八九十"[::-1]结果是"十九八七六五四三二一〇"
  • 转义符(反斜杠)
  • 操作符
    • x+y:连接
    • n*x或x*n:复制n次x
    • x in s:判断x是否为s的子串
  • 字符串处理函数
    • len(x):x长度
    • str(x):转换为字符串(与eval()相反)
    • hex(x)与oct(x):整数x的十六进制或八进制小写形式字符串,hex(425)结果为"0x1a9",oct(425)结果为"00651"
    • chr(u)与ord(x):u为Unicode编码,返回其对应的字符;x为字符,返回其对应的Unicode编码
  • 字符串处理方法
    • str.lower()或str.upper():返回字符串的副本,全部字符小写/大写,"AbCdEfGh".lower()结果为"abcdefgh"
    • str.split(sep=None):返回一个列表,由str根据sep被分隔的部分组成,"A,B.C".split(",")结果为['A','B','c']
    • str.count(sub):返回子串sub在str中出现的次数,"an apple a day",count("a")结果为4
    • str.replace(old, new):返回字符串str副本,所有old子串被替换为new,"python".replace("n","n123.10")结果为"python123.io"
    • str.center(width[,fillchar]):字符串str根据宽度width居中, fillchar可选,"python".center (20,"=")结果为''=======python=======''
    • str.strip(chars):从str中去掉在其左侧和右侧chars中列出的字符,"= python= ".strip(" =np")结果为"ytho"
    • strjoin(iter):在iter变量除最后元素外每个元素后增加一个str,",".join("12345")结果为"1,2,3,4,5",主要用于字符串分隔等
  • 字符串格式化 .format()
    • 槽及其参数

7. 文件

  • 打开

    • <变量名> = open(<文件名> , <打开模式>)

    • 打开模式

      模式 描述
      r 只读模式,默认值,如果文件不存在,返回FileNotFoundError
      w 覆盖写模式,文件不存在则创建,存在则完全覆盖
      x 创建写模式,文件不存在则创建,存在则返回FileExistsError
      a 追加写模式,文件不存在则创建,存在则在文件最后追加内容
      b 二进制文件模式
      t 文本文件模式,默认值
      + 与r/w/x/a-同使用,在原功能基础上增加同时违写功能
  • 读文件

    • a.read(size):读入全部内容,如果给了参数,读入size长度的信息
    • a.readline(size):读入一行,如果给出参数,读入该行前size长度
    • a.readlines(hint):读入文件所有行,以每行为元素(字符串)形成列表如果给出参数,读入前hint行
  • 写文件

    • a.write(s):向文件写入一个字符串或字节流
    • a.writelines(lines):将一个元素全部为字符串的列表写入文件(直接拼接,没换行)
    • a.seek(offset):改变当前文件操作指针的位置,offset含义如下:0-文件开头;1-当前位置;2-文件结尾,f.seek(0) #回到文件开头
  • csv格式:二维数据存储

  • 文件关闭

    • <变量名>.close()
posted @ 2021-07-29 16:31  CharlesHo  阅读(157)  评论(0)    收藏  举报