Python数据分析与数据挖掘 第2章 Python语言基础.ppt

Python数据分析与数据挖掘 第2章 Python语言基础.ppt

  1. 1、本文档共148页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
递归函数 函数作为一种代码封装,可以被其他程序调用,当然,也可以被函数内部代码调用。 这种函数定义中调用函数自身的方式称为递归。 就像一个人站在装满镜子的房间中,看到的影像就是递归的结果。 递归在数学和计算机应用上非常强大,能够非常简洁的解决重要问题。 递归函数 数学上有个经典的递归例子叫阶乘,阶乘通常定义为: 这个关系给出了另一种方式表达阶乘的方式: 阶乘的例子揭示了递归的2个关键特征: 存在一个或多个基例,基例不需要再次递归,它是确定的表达式; 所有递归链要以一个或多个基例结尾。 递归函数 【例】递归计算阶乘 def fact(n): if n == 0: return 1 else: return n * fact(n-1) num = eval(input(请输入一个整数: )) print(fact(int(num))) 递归函数 递归函数 课堂练习:字符串反转。 对于用户输入的字符串s,输出反转后的字符串。 解决这个问题的基本思想是把字符串看作一个递归对象。 【例】字符串反转 def reverse(s): if len(s) == 2: return s[1]+s[0] return reverse(s[1:]) + s[0] print(reverse(ABCDEFGHIjkl)) 递归函数 课堂练习:字符串反转。 对于用户输入的字符串s,输出反转后的字符串。 解决这个问题的基本思想是把字符串看作一个递归对象。 【例】字符串反转 def reverse(s): if len(s) == 1: return s[0] n = len(s) if n%2 == 0: # 字符串长度为奇数 return reverse(s[n/2:n-1])+reverse(s[0:n/2-1]) else: # 字符串长度为奇数 return reverse(s[(n+1)/2:n-1])+reverse(s[0:(n-1)/2-1]) print(reverse(ABCDEFGHIJKLM)) 递归函数 实例分析:绘制科赫曲线 【例】绘制科赫曲线 import turtle def koch(size, n): if n == 0: turtle.fd(size) else: for angle in [0, 60, -120, 60]: turtle.left(angle) koch(size/3, n-1) def main(): turtle.setup(800,400) turtle.pencolor(red) turtle.speed(10) #控制绘制速度 turtle.penup() turtle.goto(-300, -50) turtle.pendown() turtle.pensize(2) koch(600,4) # 0阶科赫曲线长度,阶数 turtle.hideturtle() main() lambda关键字函数 以lambda短句的形式定义的函数,可以直接使用在语句中,例如: f = lambda x, y : x + y #定义函数 f(2,4) #调用函数 list(filter(lambda x: x%3==0, [1,2,3,4,5,6,7])) #滤出3的倍数 [3, 6] 6 使用 Python关键字lambda,可以简单地定义一个函数,例如: list(map(lambda x: x*x, [1,2,3,4,5,6,7])) #求平方 [1, 4, 9, 16, 25, 36, 49] 主要是作用是把类中的一个方法变为类中的一个属性,使定义属性、读取属性值和设置属性值更加容易。 class C: #定义一个类 def __init__(self): self._name = @property #将name()装饰为属性 def name(self): return self._name @name.setter def name(self, value): self._name = value c = C() c.name = abc #将name作为属性使用 c.name abc 属性装饰器 @property 装饰器 类方法装饰器 @classmethod 可以不需实例化类,就可以直

文档评论(0)

dllkxy + 关注
实名认证
内容提供者

本文库主要涉及建筑、教育等资料,有问题可以联系解决哦

版权声明书
用户编号:5213302032000001

1亿VIP精品文档

相关文档