python——第九天

今日目标:

 偏函数

 递归

 字符串对象

 切片

 常见排序和查找

 

 

偏函数:

 python中存在一种函数的特殊使用,称为偏函数

 如果在调用某个函数时,恰好某一个或者,某一些参数都是一个固定值(正好不是默认值),

 为了方便调用,我们可以通过特殊手段修改默认值

from functools import partial

新的函数 = partial(原函数名称, 参数=新值)


递归(recursion):
递归就是函数调用函数本身


求 1~n的和:


注意:递归虽然非常好用,可以将一些复杂的问题,极度简化,使得可以通过递归解决一些复杂问题,
但是递归是会重复压栈调用相同函数,所以栈内存会被大量占据,无法释放,
容易出现:“栈溢出错误”(StackOverFlow)


斐波那契数列:
第三个元素,是前两个元素之和
0 1
1 1
1 2


求第n个项的元素是多少?


案例:斐波那契数列的实现



思考题:
1、青蛙跳楼梯
2、不死兔子:
一对刚刚出生的兔子,四个月之后,会称为成年的兔子,成年兔子每月会生一对小兔子
等N月时,共有多少对兔子




字符串对象:
字符串是基本数据类型,讲解了几种常见的创建方式
"字符串"
'字符串'
"""
字符串
"""
'''
字符串
'''

str() 创建或者转换其他类型为字符串
len(字符串) 获取字符串的长度

 字符串是一个有序的序列(sequence),也是一个可迭代对象,也有下标

  字符串[下标] # 某一个位置的字符

 

 通过while、for循环进行遍历

 

 字符常量:字符串本质是一种常量

 

 

全局函数: 

 enumerate(可迭代对象)

 

 

python是一门面向对象的编程语言,在面向对象的编程语言看来:

 万物皆对象

 

字符串对象的常见方法和属性:

 ['capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 

 'expandtabs', 'find', 'format', 'format_map', 'index', 

 

 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 

 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 

 

 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 

 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind',

 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 

 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate',

 'upper', 'zfill']

 

 

 |-- capitalize # 首字母大小

 |-- center # 文本居中对齐

 |-- ljust # 文本左对齐

 |-- rjust # 文本右对齐

 

 |-- count()

 |-- endswith()

 |-- startswith()

 |-- format()

 

 |-- find()

 |-- index()  

 |-- rindex()

 |-- rfind()

 

 |-- lstrip()

 |-- rstrip()

 |-- rstrip()

 

 

 |-- upper()

 |-- lower()

 

 |-- join()

 |-- split()

 

 

 |-- maketrans()

 |-- translate()

 

 

 

 |-- encode() # 编码转换,注意编码!!!!

 

 

 字节类型中的转换函数

 

 |-- decode()

 

 

 

 

切片操作:

 python提供的用来切割和分割有序序列的一种技术

  list、tuple、字符串

 

 切片操作是基于下标进行切割

 

 对象[num1:] # 返回num1到结束的值

 对象[num1:num2] # 返回[num1, num2)的所有值

 对象[num1:num2:step] # step是步长,步长为负数,表示从右向左切割

 

 

注意:python是支持付索引操作的!!!!

 

 

 

课堂案例练习:

 输入字符串,判断该字符串是否是回文字符串

 

 

 

排序:

 为数据排序,目的让数据有序,有序的数据可以使用各种查找算法,实现快速查找

 

 冒泡排序

 选择排序

 插入排序

 

 大O表示法

 时间复杂度:O(1) O(logN) O(n) O(nlogN) O(n^2)

 空间复杂度:

 

 算法稳定度:

 

 

 

冒泡排序:

 [1, 3, 2, 10, -8, 9, -30, 7] n 最多n - 1

 

 [1, 2, 3, -8, 9, -30, 7, 10] # 第1个最大值

 [1, 2, -8, 3,-30, 7, 9, 10] # 第2个最大值

 [1, -8, 2, -30, 3, 7, 9, 10] # 第3个最大值

 [-8, 1, -30, 2, 3, 7, 9, 10] # 第4个最大值

 [-8, -30, 1, 2, 3, 7, 9, 10] # 第5个最大值

 [-30, -8, 1, 2, 3, 7, 9, 10] # 第6个最大值

 

 两两比较,找到最大值!!!

python——第九天_第1张图片

 递归:

python——第九天_第2张图片

 

python——第九天_第3张图片

 

你可能感兴趣的:(python)