Python学习笔记

🏀 变量和简单数据类型

  • 变量:不用声明类型,从声明到赋值语法简洁
  • 字符串:双引号或单引号包围;常用方法 title(),upper(),lower(),strip(),lstrip(),rstrip(),replace(),split() (这些方法都不是永久性修改字符串,Python中的字符串和整数一样不能改变) 使用 variable.method()形式
  • isinstance(x, str)可用于判断一个变量是不是字符串,返回布尔值
  • import re re.split() 可用于更高级的分割(正则表达式)
  • 数字:使用**表示乘方;浮点数的小数位数是不确定的;str(num)可将数字num转换为字符串,以防python不会隐式转换
  • 注释:# ''''''

🚜 列表简介

  • 声明与赋值:e.g. name = ['t','j','d']
  • 访问:与数组类似;通过将索引4设为-1访问最后一个列表元素,-2访问倒数第二个
  • 修改元素
  • 添加元素 list.append(element) 在末尾添加元素;插入元素 list.insert(index,element);删除元素 1. del list[index] 2. list.pop() 弹出list末尾的一个元素,并返回删除的元素使我们依然能访问被删除的值 3. list.pop(index) 弹出指定位置的元素 4. list.remove(value) 根据值删除元素,一次只能删一个
  • 组织列表
  • 正向 list.sort(),无返回 反向 list.sort(reverse=True) 为永久性修改顺序
  • 临时性修改:sorted(list) 返回排序后的列表 其实并没有改动原来的list
  • 倒着打印列表:list.reverse() 修改是永久性的
  • 确定长度:len(list)
  • sort 与 sorted 区别:sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作;list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

😼 操作列表

  • 使用for循环遍历列表,可以对每个列表元素执行同种操作
  • 创建数字列表:range()可以生成一定范围内的数字,如for num in range(1,5): print(num)生成1 2 3 4;list(range(n1,n2))可将range()的结果转化为一个列表;range()能指定步长,如range(1,5,2)从1开始数字不断加2;使用range()几乎能创建任何数字集;使用range()只能用来迭代(循环)和配合list()创建新列表,只能是整数
  • 对数字列表进行简单的统计计算:min() max() sum()
  • (数字)列表解析:将for循环和创建新元素的代码合成一行,并自动附加新元素,e.g. squares = [value**2 for value in range(1,11)]
  • 使用列表的一部分:创建切片 如players = ["a","b","c"] print(players[0:2]),其中player[0:2]创建了从索引0到索引1的切片(也属于列表) 若不指定结束索引则一直到末尾为止,开始索引亦如此;遍历切片;复制列表:e.g. friend_food = ['a','b','c'] my_food = friend_food[:] 其中friend_food[:]利用切片创建了一个副本(复制)给my_food,若直接my_food=friend_food实际上并没有创建出一个新的列表,第二种方法是用list_name.copy()创建副本;
  • 若创建空列表l = [], 只能用l.append()方法添加,不能用索引添加
  • 元组:不能修改元素的列表,定义时使用圆括号来标识;虽然不能修改元组的元素,但给存储元组的变量赋值时合法的

🐞 if语句

  • if语句需要有条检测试语句,结果是True则执行代码块;布尔值要首字母要大写
  • 如果想执行一个代码块用if-elif-else语句;如果要运行多个代码块,就使用一系列独立的if语句
  • 用if语句处理列表:在高效利用for循环的同时,以不同于其它元素的方式对特定的列表元素进行处理

🐹 字典——以键值对的形式储存,以大括号标识,以逗号分隔键值对,通过键来访问值

  • 使用字典:
  • 访问值
  • 添加键值对
  • 创建空字典
  • 修改字典中的值
  • 删除键值对:用del
  • 字典可存储一个对象的很多信息比如说一个人,也可由类似对象组成
  • 遍历字典:
  • 遍历键值对:e.g. for key,value in Don.items(): #Don.items()会返回一个键值对列表
                 print(key + ":" + str(value))
    
  • 遍历键:将items()换成keys(),遍历字典时会默认遍历键
  • 按顺序遍历所有键:套一个sorted()
  • 遍历字典中所有值;用values(),plus,因为值很可能有重复,用set(dictionary.values())防止获取重复的值
  • 嵌套——将字典存在列表中或把列表存在字典中:
  • 字典列表:比如users列表,每个列表元素都是一个user字典
  • 列表字典:当需要再字典中将一个键关联到多个值时,都可以再字典中嵌套一个列表
  • 字典和列表的区别:字典有键,易索引于查询;字典存储数据更灵活,可存储更丰富的信息;列表简单;
  • 创建字典5种方式:

方式 1:

dict1 = {}
dict1['firstname'] = 'ma'
dict1['lastname'] = 'yun' 

方式 2:

dict1 = {'firstname':'ma', 'lastname':'yun'}

方式 3:

dict1 = dict([('firstname','ma'), ('lastname', 'yun')])

方式 4:

dict1 = dict(firstname = 'ma', lastname = 'yun')

方式 5:

dict1 = dict(zip(['firstname', 'lastname'], ['ma', 'yun']))
  • collections模块下一些dict的子类:defaultdict OrderedDict Counter

👽 用户输入与while循环

  • input() int()
  • while: 标志位 break continue 使用while循环来处理列表和字典

🐮 迭代器

迭代器是访问可迭代对象的工具 迭代器是指用iter(obj)函数返回的对象(实例) 迭代器是指用next(it)函数获取可迭代对象的数据 迭代器函数(iter和next)

iter(iterable)从可迭代对象中返回一个迭代器,iterable必须是能提供一个迭代器的对象 next(iterator) 从迭代器iterator中获取下一了记录,如果无法获取下一条记录,则触发stoptrerator异常

迭代器只能往前取值,不会后退;用iter函数可以返回一个可迭代对象的迭代器;非迭代器的可迭代对象在使用for循环时,实际是先调用 iter() 方法转换为 迭代器,再循环调用 next()并返回值.

for x in [1, 2, 3, 4, 5]:
    pass

实际上完全等价于:

it = iter([1, 2, 3, 4, 5])
while True:
    try:
        x = next(it)
    except StopIteration:
        break

😸 函数

  • 函数定义:def
  • 参数:位置实参;关键字实参;默认实参;让实参变得可选——设置默认参数(指定形参为空字符串)
  • 返回值
  • 传递列表:在函数中修改列表;禁止函数修改列表——提供列表的切片(副本)给形参
  • 传递任意数量的实参:
  • *形参名:列表
  • **形参名:字典
  • 将函数存储在模块中:导入整个模块 import module_name; 导入特定函数 from module_name import function_name; 使用as给函数指定别名; 使用as给模块指定别名; 用导入模块中所有函数 from module_name import ; 最佳做法是要么只导入你需要用的函数,要么导入整个模块并使用句点表示法使用函数。

🐰 类

  • 创建和使用类
  • 使用类和实例:类中所有属性都必须初始化,给属性指定默认值,就不必在创建实例的时候提供实参了;修改属性——直接修改或通过方法修改;
  • 继承:重写父类方法;将实例用作属性,可以将类的一部分作为一个独立的类提取出来;
  • 导入类:与导入函数的语法相同;可导入python标准库中的类

🏈 文件

  • 读取文件: ```python '''读取文件的三种方式''' with open('py.txt') as file_object: # 使用with即使发生错误可以关闭文件 contents = file_object.read() print(contents.strip())

with open('py.txt') as file_object: for line in file_object: print(line.rstrip())

with open('py.txt') as file_object: lines = file_object.readlines()
for line in lines: print(line) ``` 注意点:print()会自动加换行,加一个参数end=""则不加换行;replace()方法不改变原字符串;读取文本文件时,python将所有文本解读为字符串;不提供模式实参就默认是只读模式。

  • 写入文件:

用file_object.write("...")写入;附加模式'a' 读取模式'r' 写入模式'w' 读取和写入'r+';

注意点:write()不会在末尾添加换行;Python只能将字符串写入文件;写入模式时,若文件不存在则自动创建。

🚌 异常

  • 处理ZeroDivisionError异常
  • 使用try-except代码块
  • 使用异常避免崩溃
  • else代码块:依赖于try代码块成功执行的代码都应放到这里面
  • 处理FileNotFoundError异常
  • 分析文本
  • 使用多个文件
  • 失败时一声不吭

🎉 存储数据

  • 模块json让你能够将简单的python数据结构转储到文件中
  • 写入:json.dump(data, f_obj) 加载储存在文件中的信息:data = json.load(f_obj)

🗽 测试

  • unittest

201907

results matching ""

    No results matching ""