早上
内容回顾
Python环境安装和搭建
变量和常量
数据类型和类型转换
常见的运算符
程序控制流程
容器篇
函数篇
递归
字符串对象
切片操作
排序
今日目标
- 排序常见算法【三种基本排序】
- 二分查找
- 模块篇
- IO流
数据排序
1,3,2,4,25,6,13,16,17,9,7
- 1, 2, 3,4,6,13,16,17,9,7,25
- 1,2,3,4,6,13,16,17,9,7,25
- 1,2,3,4,6,13,9,7,16,17,25
- 1.2,3,4,6,9,7,13,16,17,25
- 1,2,3,4,6,7,9,13,16,17,25
选择排序
4,25,6,13,-1,33,2,16
- -1,25,6,13,4,33,2,16
- -1,2,5,13,4,33,25,16
- -1,2,4,13,5,33,25,16
- -1,2,4,5,13,33,25,16
- -1,2,4,5,13,16,25,33
**算法稳定性:**选择排序是一种算法不稳定的排序方式;冒泡排序是一种算法稳定的排序方法;
算法时间复杂度:算法占用的时间O(N^2)
算法空间复杂度:算法占用的空间O(1)
插入排序
4,25,6,13,-1
- 4,25,6,13,-1
- 4,6,25,13,-1
- 4,6,13,25,-1
- -1,4,6,13,25
数据查找
二分查找
二分查找,必须针对有序序列进行查找,原理:每次查找中间值,之后比较中间值和需要查找的值,从而确定需要查找的范围(当然也可能直接找到)。
下午
内容回顾
- 三种基础排序方式
冒泡 插入 选择
- 二分查找
常规的循序实现
递归实现
Python的模块篇
什么叫做python的模块和包
模块(module):也有人喜欢叫做库(lib)。xxx.py就是一个模块!
注意:模块名称也是一种标识符,所以当遵循标识符的命名规范
1.标识符是由字符(A~Z 和 a~z)、下划线和数字组成,但第一个字符不能是数字。
2.标识符不能和 Python 中的保留字相同。有关保留字,后续章节会详细介绍。
- Python中的标识符中,不能包含空格、@、% 以及 $ 等特殊字符
- Python 语言中,以下划线开头的标识符有特殊含义,例如:
- 以单下划线开头的标识符(如 _width),表示不能直接访问的类属性,其无法通过 from...import* 的方式导入;
- 以双下划线开头的标识符(如__add)表示类的私有成员;
- 以双下划线作为开头和结尾的标识符(如 __init__),是专用标识符。
包(package):指的是一种特殊的文件夹,用来保存和分类管理模块。
注意:普通文件夹可以当做包来使用,但python中标准的包是文件夹中存在一个_init_.py【初始化文件】
如何导包、导入模块
导包、导模块:就是将已将写好的代码模块或者包导入到当前需要写的模块中,使用导入的相关变量、方法、函数、类……等
import model_name
import package_name
import model_name/package_name as alias
import package_name.package_name
import package_name.package_name....package_name
import package_name.package_name....package_name as alias
python3推荐使用一种新的方式,将要使用的子模块或方法名称……分离导入关键字from。表示从什么模块或者包中导入子对象。
from package_name.package_name....package_name import 所需的对象
from os import path
from random importt randint
from sort_find import arr
from . import sort_find as sf
builtins全局函数
import builtins as b
dir(b)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BaseExceptionGroup', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EncodingWarning', 'EnvironmentError', 'Exception', 'ExceptionGroup', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
官方提供的内置模块
random
math
os
os.path
sys
uuid
builtins
datetime
time
calendar
hashlib
hmac
……
随机数模块
# 导入模块
import random
# 查看帮助文档
print(help(random))
# 查看该模块下的所有方法和函数等
dir(random)
random()
randint(a, b)
choice(iterable)
choices(iterable)
randrange(a, b)
shuffle(iterable)
uniform(a, b)
数学模块
提供大量跟数学相关的三角函数、常量、一些特殊对象等,提供大量功能代码,在开发运算中使用。
系统模块
os模块,该模块主要用来做操作的文件管理相关操作。
path模块
os.path模块