容器——数据结构
线性表:
数组:类型一致的,大小固定,连续的内存结构
链表:不一定要内存空间连续,大小不固定
栈:先进后出
队列:先进先出
内置容器:
list列表
底层使用的是双向链表 线性表 有序的(有下标)
变量名 = [ ]
dir(list):查看用法
['add', 'class', 'class_getitem', 'contains', 'delattr', 'delitem', 'dir', 'doc', 'eq', 'format', 'ge', 'getattribute', 'getitem', 'getstate', 'gt', 'hash', 'iadd', 'imul', 'init', 'init_subclass', 'iter', 'le', 'len', 'lt', 'mul', 'ne', 'new', 'reduce', 'reduce_ex', 'repr', 'reversed', 'rmul', 'setattr', 'setitem', 'sizeof', 'str', 'subclasshook', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
~~~
主要用法
'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'
set集合{ }
底层基于哈希表实现的:不能重复,无序
dir(set):查看用法
tuple元组()
dir(tuple)
不可变数据类型。有序的
dict字典[ ]
字典名["键名"]
dir(dict)
排序
为数据进行排序,后期配合其他算法,实现数据的快速查找
冒泡排序
相邻的两两进行比较
选择排序
插入排序
假设首位是有序的,保证第i个之前都是有序的
二分查找
二分查找的实例
切片
[start:end:step]
Start:不写的情况下,默认从下标为0的地方开始切片
取左不取右边
end:不写的情况下,默认直接切片到所有元素结束
step:不写的情况下默认为1
切片切不到时,只会无返回,不会进行报错
如果使用的是整数下标,那么就得保证
Print(str[1:6:-1]):start = 1 end=6表明切片方向是从左向右,但是,step采用-1,是表明从右向左切
字符串对象
字符串的应用
Capitalize( ):首字母大写
Center():居中对齐
Count( ) :统计元素的个数,有多少个同样的
Endswith():判断字符串是否 以什么结尾_返回的是布尔值
Startwith():是否以……开始
Find():从左到右检索某个字符或字符串,找到第一个满足的字符或字符串,并且返回下标,如果未检索到,最终会返回-1
index():检索不到会报错
rfind():从右向左边进行检索
rindex():从右边向左边进行
format():格式化字符串的
Join()按照特定的规则进行字符串的拼接
split()按照特定的字符串进行分割,最终返回的是一个列表
Upper()转大写
Lower():转小写
Strip()清楚字符串两边的空格
Lstrip()清楚左边空格
Rstip()清除右边空格
title()标题格式每个单词首字母大写
replace(old,new)替换返回一个新的字符串不改变原来的
encode():转换编码格式将字符串转化为字节
decode():将字节转化为对应的编码
函数
定义方式:
Def 函数名([形参]):
一行或者多行的函数体
[return返回值]
函数碰见return会立即进行返回,不会再执行函数
本地变量(局部变量)和全局变量
本地变量(局部变量):声明在函数内部的变量
全局变量:
全局变量在任何位置都能够被读取,默认情况下,全局变量不允许被函数内部进行更改
局部变量只能在函数内部进行访问。
外部进行访问,通过return返回出去
函数调用的本质:
程序启动的瞬间,会生成至少一个执行栈,函数是在堆中存放的,每当函数被调用时,会进行压栈,结束之后,会立刻进行弹栈
值传递和引用传递
值传递传递的是值,引用传递传递的是内存地址