def

python性能优化

筅森魡賤 提交于 2020-12-22 06:51:36
1。去除不必要的显式for循环,使用向量化计算。 1 import time 2 import numpy as np 3 4 5 def for_time(): 6 """ Make a array, len = 1000000, use for loop add one. """ 7 start = time.time() 8 list_data = np.arange(0, 10000000, 1 ) 9 for i in range(1000000 ): 10 list_data[i] += 1 11 print ' for loop used time: ' , time.time() - start 12 13 14 def vector_time(): 15 """ make a array, use vector calculation add one. """ 16 start = time.time() 17 list_data = np.arange(0, 10000000, 1 ) 18 list_data += 1 19 print ' vector calculation used time: ' , time.time() - start 20 21 22 if __name__ == ' __main__ ' : 23 for_time() 24

python之递归函数

走远了吗. 提交于 2020-12-22 06:45:26
递归函数 例如计算阶乘 n! = 1 x 2 x 3 x ... x n ,用函数 fact(n) 表示: fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x n 显然fact(n)=n x fact(n-1),但当n = 1时,需要做特殊处理 递归函数定义形式如下: def fact(n) if n == 1 : return 1 return n * fact(n-1) 当n取值很大时,递归函数调用时会引起栈溢出,为了解决栈溢出问题,通常通过尾递归优化。 【尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式】: # 尾递归定义形式 def fact(n): return fact_iter(n, 1 ) def fact_iter(num, product): if num == 1 : return product return fact_iter(num - 1, num * product) ------------------------------------------------------------------------------------------- # 执行过程 ----->fact(5 ) ----->fact(5,1 ) ---

学生选课系统

我的未来我决定 提交于 2020-12-22 06:44:10
所有的程序开发都是从核心功能 出发的,所以我们在开发的时候首先要完成的总是最主要的功能,以后还要慢慢学会自 己提取“核心的功能”、进行“需求分析”,“程序设计”等工作来保证你们能够顺利成长 为一个优秀的程序员。 核心功能 功能概述 学生选课 需求分析 从“学生选课系统” 这几个字就可以看出来,我们最核心的功能其实只有 选课。 角色 学生、管理员 功能 登陆 : 管理员和学生都可以登陆,且登陆之后可以自动区分身份 选课 : 学生可以自由的为自己选择课程 创建用户 : 选课系统是面向本校学生的,因此所有的用户都应该由管理员完成 查看选课情况 :没个学生可以查看自己的选课情况,而管理员应该可以查看所有学生 的信息 工作流程 登陆 :用户输入用户名和密码 判断身份 :在登陆成果的时候应该可以直接判断出用户的身份 是学生还是管理员 学生用户 :对于学生用户来说,登陆之后有三个功能 1、查看所有课程 2、选择课程 3、查看所选课程 4、退出程序 管理员用户:管理员用户除了可以做一些查看功能之外,还有很多创建工作 1、创建课程 2、创建学生学生账号 3、查看所有课程 4、查看所有学生 5、查看所有学生的选课情况 6、退出程序 程序设计 对于复杂的功能,我们首先就应该想到面向对象编程。而要想将面向对象的程序开发好,就 应该做好类和对象的分析工作。 选课系统简单的划分其实只有两个角色:管理员和学生。

Python 递归函数

折月煮酒 提交于 2020-12-22 06:31:58
本文章参考自 廖雪峰的官方网站 Python--递归函数 一. 描述   1.编程语言中, 函数Func(Type a,......)直接或间接调用函数本身,则该函数称为递归函数.   2.在数学上,关于递归函数的定义如下: 对于某一函数f(x), 其定义域是集合A, 那么若对于A集合中的某一个值x0,   其函数值f(x0)由f(f(x0))决定,那么就称f(x)为递归函数.   3.递归的定义:一种计算过程, 如果其中每一步都要用到前一步或前几步的结果, 称为递归的.   用递归过程定义的函数, 称为递归函数, 例如连加,连乘及阶乘等. 凡是递归的函数, 是可计算的, 即能行的. 二. 实例说明 1. 例1: 计算阶乘 n! = 1 * 2 * 3 * ... * n, 用函数fact(n)表示, 可以看出: fact(n) = n! = 1 * 2 * 3 * ... * (n-1) * n = (n-1)! * n = fact(n-1) * n, 所以, fact(n)可以表示为n * fact(n-1), 只有n = 1时需要特殊处理. 于是, fact(n)用递归的方式写出来就是: def fact(n): if n == 1 : return 1 return n * fact(n - 1 ) print (fact(5)) # 输出结果: 120 print

Python递归函数如何写?正确的Python递归函数用法!

陌路散爱 提交于 2020-12-22 06:21:12
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 一、举个例子,我们来计算阶乘n! = 1 x 2 x 3 x … x n,用函数fact(n)表示,可以看出: fact(n) = n! = 1 x 2 x 3 x … x (n-1) x n = (n-1)! x n = fact(n-1) x n 所以,fact(n)可以表示为n x fact(n-1),只有n=1时需要特殊处理。 ps:另外很多人在学习Python的过程中,往往因为没有好的教程或者没人指导从而导致自己容易放弃,为此我建了个Python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,不懂的问题多跟里面的人交流,都会解决哦! 于是,fact(n)用递归的方式写出来就是: def fact(n): if n==1: return 1 return n * fact(n - 1) 上面就是一个递归函数。可以试试: fact(1) 1 fact(5) 120 fact(100)

《大秦赋》最近很火!于是我用Python抓取了“相关数据”,发现了这些秘密......

二次信任 提交于 2020-12-22 05:44:26
为什么需要加星标? 由于 微信公众号出现了 “乱序” 排列 的状况,也就是说: 文章不会按照 “时间顺序” 推送给你。 那么朋友们就不能第一时间,收到我的干货 。因此希望 您抽出一分钟,完成如下三步 。 01 02 03 1845 人已添加“ 星标 ” 文末获取“本文代码” 前言 最近,最火的电视剧莫过于《大秦赋了》,自12月1日开播后,收获了不错的口碑。然而随着电视剧的跟新,该剧在网上引起了 激烈的讨论 ,不仅口碑急剧下滑,颇有 高开低走的趋势 ,同时该剧的评分也由最初的8.9分,下降到了现在的6.5分。 虽然我还没有看过这个新剧,但是对于小伙伴们讨论的内容,却颇有兴趣(主要还是大家老是讨 论这个剧)。因此, 我用Python爬取了《大秦赋》的相关数据 ,进行了一波分析。 数据爬取 巧妇难为无米之炊,做数据分析之前最重要的就是 “数据获取” 。于是,我准备用Python爬取豆瓣上的 短评数据 以及一些 评论时间信息 、 评价星级信息 。 关于数据的爬取主要说以下几个内容: 1) 关于翻页操作 第一页: https://movie.douban.com/subject/ 26413293 /comments?status=P 第二页: https://movie.douban.com/subject/ 26413293 /comments?start= 20 &limit= 20

爬虫大作业(虎扑足球新闻)

倖福魔咒の 提交于 2020-12-21 20:25:31
import requests from bs4 import BeautifulSoup import jieba from PIL import Image,ImageSequence import numpy as np import matplotlib.pyplot as plt from wordcloud import WordCloud,ImageColorGenerator def changeTitleToDict(): f = open('yingchao.txt', 'r',encoding='utf-8') str = f.read() stringList = list(jieba.cut(str)) symbol = {"/", "(", ")" , " ", ";", "!", "、" , ":"} stringSet = set(stringList) - symbol title_dict = {} for i in stringSet: title_dict[i] = stringList.count(i) print(title_dict) return title_dict for i in range(1,10): page = i; hupu = 'https://voice.hupu.com/soccer/tag/496-%s

基于Pyecharts V1.x.x的数据可视化(一)

老子叫甜甜 提交于 2020-12-21 06:56:55
基于Pyecharts v1.x 的数据可视化 1、Pyecharts简介 Echarts是一个由百度开源的数据可视化工具,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,Pyecharts诞生了。 Pyecharts最早只适用于工程领域的可视化开发,但是随着其对Jupyter notebook、Jupyter lab等交互式开发工具的支持不断加强,现在也开始被许多数据分析师应用到数据探索中。 1.1、Pyecharts各个版本与Python的对应关系 pyecharts 分为 v0.5.x 和 v1.x 两个大版本,v0.5.x 和 v1.x 间不兼容,v1.x 是一个全新的版本。 Pyecharts各版本与python的对应关系见下表 版本 V0.5.x V1.x.x python 版本选择 Python2.7,3.4+ Python3.6+ 注 : 经Pyecharts开发团队决定,0.5.x 版本将不再进行维护 1.2、Pyecharts v1系列的新特性 全面拥抱 Python3 和 TypeHint pyecharts v1.0.0 停止对 Python2.7,3.4~3.5 版本的支持和维护,仅支持 Python3.6+。如果还不知道什么是 TypeHint 的同学

还在苦苦做数独?试试用代码实现吧

故事扮演 提交于 2020-12-21 00:52:51
数独,相信很多朋友小时候都玩过。数独一般是9x9的一个数字矩阵,其中具有三个规则 每一行都包含1-9的所有数字 每一列都包含1-9的所有数字 每个下小矩阵都包含1-9的所有数字 由于每行,列,小矩阵一共只包含9个空,所以隐含要求就是不能重复。而这个不能重复正式我们做数独的关键思路所在。 贪心做法 拿一个简单版的数独举个例子 我一般手工的做法是什么呢?以空[0,2]为例,按照上面三个规则,首先该空所有的可能情况是1-9的一个集合,现在减去该行(第0行)存在的数字,还剩下1,3,5,6,7这五个数字,再减去该列(第2列)存在的数字,还剩下6这一个数字,再减去它所在的这个矩阵存在的数字,也就还剩下6,那么我们此时就可以将6填到[0,2]这个坐标的空格中。以此类推。(此做法有坑,难度提高没有解) 我们先按照刚才的思路,将代码写出来,然后再来分析里面的坑。 首先,我们需要定义一个函数来获取某个空所有可能出现的值集合 # 得到第 i 行的所有数字 def get_row_number(i: int, old1): ans = set() for x in old1[i]: if x != 0: ans.add(x.__str__()) return ans # 得到第j列的所有数字 def get_column_number(j: int, old1): ans = set() for i

Python 简明教程 --- 21,Python 继承与多态

喜你入骨 提交于 2020-12-20 19:30:54
程序不是年轻的专利,但是,它属于年轻。 目录 我们已经知道 封装 , 继承 和 多态 是面向对象的三大特征,面向对象语言都会提供这些机制。 1,封装 在 这一节 介绍类的 私有属性和方法 的时候,我们已经讲到过 封装 。 封装 就是在设计一个类的时候,只允许使用者访问他需要的方法,将复杂的,没有必要让使用者知道的方法隐藏起来。这样,使用者只需关注他需要的东西,为其屏蔽了复杂性。 私有性 就是实现 封装 的一种手段,这样,类的设计者就可以控制类中的哪些属性和方法可以被使用者访问到。一般,类中的属性,和一些复杂的方法都不会暴露给使用者。 由于 前边的章节 介绍过封装,这里就不再举例说明了。 2,继承 通过 继承 的机制,可使得 子类 轻松的拥有 父类 中的 属性和方法 。 继承 也是一种 代码复用 的方式。 Python 支持类的继承, 继承的类 叫做 子类 或者 派生类 , 被继承的类 叫做 父类 或 基类 。 继承的语法如下: class 子类名(父类名): pass 在 子类名 后边的括号中,写入要继承的父类。 object 类 在Python 的继承体系中, object 是最顶层类,它是所有类的父类。在定义一个类时,如果没有继承任何类,会默认继承 object 类。如下两种定义方式是等价的: # 没有显示继承任何类,默认继承 object class A1: pass #