2021-09-27python(四)

python的容器:

什么是容器:容器就是编程语言提供给我们开发者使用的对象(包含性质)

为什么学习容器:大量数据的时候,批量的管理和操作大量数据

什么时候用:大量数据,特殊数据

在程序中数组,链表,栈,队列,其中数组查询非常快

怎么用:

python官方为大家提供四种常见容器

list(列表):

有序的数列

在程序中,线性表:数组,链表,栈,队列

python的list底层就是基于双向链表结构设计的

[] #列表是以[]的形势表现

ls=[] #空列表

ls=[1,2,3,4,5,6] #创建了一个有如下元素的列表

ls=list([1,2,3,4,5,6,7])

help(list)#全局函数help可以查阅模块信息

len():全局函数,返回长度

全局函数:不需要导入包 print(),input(),type(),range(),list(),len(),exit(),help(),dir()

访问list中的元素

线性表,都是具有下标(索引)的

列表对象[下标]

注意:下标从0开始,注意越界问题

list常见方法:

append #在列表尾部追加元素

insert(index,元素)#在对应的索引位插入元素

remove(元素)#移除元素,如果不存在,则报错

pop(index=-1)#默认移除最后一个元素,如果存在参数,则该参数就是要移除的下标,注意:下标有误,会抛出异常

reverse()#翻转列表顺序

sort()#排序

clear()#清空列表

index(元素)#查找元素位置

count(元素)#统计某元素数量

extend()#合并列表

copy()#拷贝对象,其本质为前拷贝

set(集合):特点:无序的(不存在下标),不重复的

底层使用的hash表(哈希表)

定义:

1,借助弱数据类型语言的特点

{xx}

注意:必须要存在值,否则默认空{}是字典类型,而不是set

2,全局set函数

s=set({})

遍历只能使用for循环遍历,while没有办法遍历

add#添加元素

clear()#清除列表

copy()#浅拷贝

difference()#差集

intersection#交集

union#并集

remove(元素)#移除元素,如果不存在,则报错

pop(元素)#随机移除,不存在报错

discard(元素) #随机移除,不存在不报错

tuple(元组):

不可变数据类型,就是说它里面的元素不允许被修改

定义:(), t=tuple(("xx"))

count() #统计元素个数

index()#查看元素索引位置

注意:t=(1)不代表元组代表int

t=(1,)代表元组

dict(字典):

定义:

d={}

d={k1:v1,k2:v2}

d=dict({....})

可以使用key访问到key对应的值

d["k1"]

d.get("k2")

d.get("k2","erro")#当字典中无k2值默认输出erro

p["name"]="lisi" #增加键值对,如果字典中有这一个key则覆盖

clear

copy

get

keys #将所有的key返回

values#将所有的值返回

setdefault

items#一对一对的返回

pop (key) #通过key删除键值对

popitem()#安装LIFO(last-in,first-out)order删除键值对

字典的遍历:

for key in p :

print(key , p[key])

==

for key in p.keys() :

print(key,p.get(key))

==

for key , value in p.items() :

print(key,value)

==

for t in p.items() :

print(t[0],t[1])

查看全局函数:dir(builtins)

排序:将无序的数据想办法排列成有序的数据

冒泡排序:

升序:

降序:

, 选择排序:每次查找的时候,查找到最小的值,跟第一个交换

,插入排序:

查找方法:

二分查找(折半查找):

1,找到中间数

2,不停比对直至找到正确的值

查找:特指从有序的数据中查找需要数据的位置

函数:

1,什么是函数(what)

C语言是一门面向过程的语言

函数就是行为,动作,功能,过程

2,python如何定义函数

关键字def (defined function)

函数名称的命名规范就是变量的命名规范

def 函数名称(【参数列表】):

#函数体

#【return 返回值】#放在中括号中代表可有可无

3,函数的分类:

以有没有返回值,有没参数

函数遇到return关键字,则立刻返回

参数个数,根据情况任意,参数类型,是任意类型

函数定义者:

系统函数:

由官方定义的函数:

print,input,type。。

第三方定义:

需要安装这些模块,才能使用

pip,install 模块名称

pip(python install package)

自定义函数

我们写的函数

注意:(函数,变量...)命名时一定要注意,和系统的全局函数不要冲突

4,全局变量和局部变量(本地变量);

全局变量:直接定义在py(模块)文件中的变量 注意:全局变量在函数可以直接访问,但是在python中不允许被修改,如果一定要修改需要提前声明这个函数需要修改某个全局变量,在函数的第一行,global关键字声明需要修改全局变量

列表是一个对象,它存在与堆中所以在函数中可以被改变

eg:global age #打第一行

局部变量:定义在函数内部的变量,只能在函数内部访问

5,函数的调用过程--压栈(内存模型)

函数本质就是一个对象,一般在堆中

压栈(push):将函数从堆内存中放到栈中执行

弹栈(pop):函数执行完成后出栈内存

代码本质都是在内存中运行的

内存中栈是比较小的,堆是非常大的占内存的百分之九十空间

栈stack的特点:先进后出,后进先出

堆heap的特点:

6,引用传递和值的传递

引用:传递的本质是地址,是对象,是引用

值传递:本质就是值

函数本质就是一个对象,参数的类型,是任意类型

7,函数参数(默认参数,命名参数,可变参数,万能参数)

默认值:def area(r ,pi=3.14)#注意默认值参数一定要写在普通参数之后

可变参数:def text(x,y,*args): #args代表元组元素所以可以添加多个参数,而且输出按照元组输出

print(x)

print(x)

print(args)#结果(3,4,5)

text(1,2,3,4,5)

关键字(命名)参数:

def test02(a,b,**kwargs):#为字典

print(a,b)

print(kwargs)

text02(10,20,name="ljh",age=16)

#上面参数可组合不过要有顺序一般为 默认 可变 关键字

8,函数递归

什么是递归:

有两个条件:

1,函数自身调用自身

2,一定要有终止条件,否则就是一个死循环

注意:在python中,不允许递归超过1000次,不过想超过1000次也可以,需要导入sys模块

sys.setrecursionlimit(10000)#重新设置递归限制次数

sys.getrecursionlimi()#获取递归限制次数

递归的本质是以空间换时间

9,匿名函数--lambda表达式

在早期python,是没办法实现匿名的原因python是一个严格的缩进的语言

优点:简化操作,语法简洁。缺点:代码的可读性降低了,维护成本升高了

最佳实践:如果函数参数是一个函数,这个函数比较简单,则可以使用lambda,否则不太建议

10,偏函数

是一种语句的写法

偏函数:python为了能够简化函数调用,如果在调用时某个或者某几个参数,一直都是固定的,那么就可以使用偏函数实现参数固定.

int()一般我们使用的是一个参数,但是他有默认参数

int(x,base=10)#如果不对base定值,默认按十进制转化参数

import functools

返回一个新的函数=functools.partial(需要转化的函数,需要固化的参数)

也可以这样导入模块

from functools import partial

aa=partial(int,base)

11,全局函数

全局函数,就是python官方提供给我们使用,不需要导入模块,python3提供的所有全局函数

eval:将字符串转化为代码执行,如果输入数值要以逗号分隔

12,字符串对象

字符串在python中就是一个基本数据类型

在python就是一个对象

构建一个字符串

'' , "" , """ """, ''' '''

str(字符串)#创建或者转换字符串

字符串其本质就是一种常量,他底层存储在常量缓冲区

因此也是一种不可变数据类型,另外元组和数字也是不可变

因此python提供了字符串对象的概念,我们可以字符串对象的常见方法来操作字符串

字符串的常见方法

capitalize()#首字母大写

center()#两个参数,第一个表示整体长度,字符串在中间,第二个如果有,表示填充空白,空白填充为参数的字符

ljust()#左对齐

rjust()#右对齐

count()#统计字符串中出现的符号的次数

startswith()#以什么开始,是就是true,不是false

endswith()#以什么结束,是就是true,不是false

find()#查询某种符号第一次出现位置,没有返回-1

index()#查询某种符号第一次出现位置,没有返回则抛出异常

rfind()#查询某种符号最后一次出现位置,没有返回-1

rindex()#查询某种符号最后一次出现位置,没有返回则抛出异常

join()#按照特定的符号连接元素,组成字符串

split()#将字符串按照特定符号分隔成列表

13,切片:

有序序列(列表,元组,字符串)#切割,截取等操作

#有序序列可以使用遍历

eg:for i in stttt :

prin(i) #结果为字符串每一个字符输出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值