容器
1.数据结构
线性表:
数组:类型一致,大小固定,连续的内存结构
链表:不一定要内存空间连续,大小不固定
栈:先进后出
队列:先进先出
python的内置容器
list列表:
底层使用的是双向链表 线性表 有序的
1,如何定义
(1)变量名=【】
b=【1,2,3,4,“gouxin”,true】列表里面可以存储不同的数据类型
(2)list(【1,2,3,4,】) list(【zhangsan】)
2,获取列表的长度len()
3,获取每一个元素
下标:从零开始,从左往右
【1,2,3,4,“zhangsan”】
0,1,2,3,4
aa【len(aa)-1】
修改数据:列表名【列表下标】=新的数据
“为什么添加数据,删除数据”
删除:pop()通过下标删除1元素(不给参数时清除最后一位)
clear():清除列表数据
index(元素)获取匹配到的第一个元素的索引下标
index(元素,start)从start的下标找
count(元素):计数
copy():拷贝 浅拷贝
reverse():反转
sort(reverse=true)
set集合:
底层基于哈希表实现的,不能重复,无序
set()
{1,2,3,4}
add(元素):追加
pop(元素):任意删除1元素
remve(元素)
discard(元素)区别:要移除的元素不存在时,discard()不会进行报错
intersection():交集
tuple元组
不可变数据类型。有序的
访问:元组名[元组下标]
len()元组名
如果一个元组只有一条数据,那么需要在这条数据后面加上一个逗号
元组中元素存在可变数据类型,那么更改可变数据类型中的元素不会报错
dict字典
{}
dict()
dict={“uname”:“zhangsan”,“age”:21,1:21"sex“:”nan“}
查找数据:
字典名
dict1["school"]=”huazhu“
len()
key:value
get(key,默认不存在时返回):通过key获取值的
keys():获取所有的键
values():获取所有的值
del 要移除的项 可以删除任何变量
dicte1。fromkeys((1,2,3,4)):创建key值为1,2,3,4的字典,键值为none
删除:
pop():通过key'删除键值对
items():返回键值对
update()
排序
冒泡
arr=[1,5,2,3]
[5,2,3,1]
[5,3,2,1]
for i in range(0,lenn(arr)-1):
for j in range(o,len(arr)-1):
if arrr[j]>=arr[j+1]:
arr[j],arr[j+1]= arr[j+1],arr[j]
else:
pass
print(arr)
3.28
排序:为数据进行排序,后期配合其他算法,实现数据的快速查找
时间复杂度:O(1) O(logN) O(n) o(n^2)
空间复杂度
冒泡排序:相邻的两两比较
插入排序:假设前i个都是有序的(默认第一个值为有序的,之后)
二分查找:有顺序的
算法的稳定性
函数:
一段实现某一特定功能的代码的集合
本质上实现了代码的高度复用
3.29
函数定义方式:
def函数名([形参]):
一行或多行的函数体
[return返回值]:函数遇见return会立刻返回,不会执行函数内return下边的代码
本地变量(局部变量)和全局变量
本地变量(局部变量):声明在函数内部的变量
全局变量:
全局变量在任何位置都能够被读取,
默认情况下,全局变量不允许被函数内部进行更改
局部变量只能在函数内部进行访问。
外部要进行访问,通过test01返回
函数调用的本质:
程序启动的瞬间,会生成至少一个执行栈,函数是在堆中存放的,每当函数被调用时,会进行压栈,调用结束后,会立刻进行弹栈
值传递和引用传递
值传递传递的是值,引用传递传递的是内存地址
参数:
默认值参数:大多情况下,该参数值不需要改变,书写位置一般在正常参数的后面。方便用户调用数据
注意默认值参数指向不可变数据
可变参数*参数名
*args
如果说要传进去的参数是元组或者列表,只需要在元组或者列表前面添加*,就会把元组和列表作为可变参数穿进去
3.31
递归
字符串:是一种典型的不可变类型
字符串是一个对象
center():居中对齐
count():同级元素的个数
endswith():判断字符串是否以什么结尾。返回的是布尔值
startswith():是否以.......开始
find(查找的字符,【检索开始的下标,检索结束的下标】):从左到右捡索某个字符和字符串,找到第一个满足字符和字符串,并且返回下标
find如果未检索到,最终会回到-1
index()未检索到,直接报错
format():格式化字符串的
rfind():从右到左进行检索
join():按照特定的规则进行字符串的拼接
upper():转大写《==》lower():转小写
strip():清除字符串两边的空格的
lstrip()左《==》rstrip()清除右边的空格
title()标题格式(某个单词的首字母大写)
replace(old,new)返回一个新的字符串
encode():转换编码格式,将字符
切片操作
str1="abcdefg"
print(str1[:3])
print(str1[3:])
print(str1[:])
print(str1[::2])
abc
defg
abcdefg
aceg
bd
gfedcba