python算法

python模拟实现操作系统动态分区分配与回收

不羁岁月 提交于 2020-01-25 02:42:43
python模拟实现操作系统动态分区分配与回收 首次适应算法,循环首次适应算法,最佳适应算法,最坏适应算法 #!/usr/bin/env python # coding=utf-8 import copy p_sign = None p_num = 0 time = 0 class node ( object ) : def __init__ ( self , start , end , length , state = 1 , ID = 0 ) : self . start = start self . end = end self . length = length self . state = state ##state为1:内存未分配 self . Id = ID ##ID为0是未分配,其余为任务编号 def showList ( list ) : """展示空闲分区""" print ( "空闲分区如下" ) id = 1 for i in range ( 0 , len ( list ) ) : p = list [ i ] if p . state == 1 : print ( id , ' :start ' , p . start , " end " , p . end , " length " , p . length ) id += 1 def

python-- 函数

末鹿安然 提交于 2020-01-24 07:22:43
*******求字符串的长度********* g = 'hello world' 1, print(len(g)) 2,#for 循环求字符串的长度 length = 0 for i in g: length+= 1 print(length) 函数(封装程序) *****为什么要用函数:提高代码的可读性,避免代码重复,提高代码的复用性。 一、初识函数的定义与调用 def mylen(): #def 关键字加函数名(): #函数体 s = 'hello world' a = 0 for i in s: a+=1 print(a) mylen() #函数的调用,必须是函数名加括号 函数的定义:1,函数及工具,我们把事先准备工具的过程可以当做定义一个函数,拿来用准备好的工具叫做函数的调用。 2,def 关键字开头,空格后函数名加括号冒号       3,函数名命名规范:函数名只能包含函字符串,下划线和数字不能以数字开头,不能使python的关键字。简短,可描述性,且能表达函数功能。       4,函数应有注释对功能和参数进行说明,写在函数下的第一行,增强函数代码的可读性。 函数的作用:节省空间,重复调用代码。 函数的调用:函数名加括号。 写一个函数;关键字+函数名--------子代码-----优先写注释-------再写函数体 结论:函数必须是先定义后调用的。 *****

utuntu16.04安装caffe+Matlab2017a+opencv3.1+CUDA8.0+cudnn6.0

邮差的信 提交于 2020-01-23 09:27:05
上午把tensorflow安装好了,下午和晚上装caffe的确很费劲。 默认CUDA,cuDNN可以用了 caffe官方安装教程 有些安装顺序自己也不清楚,简直就是碰运气 1. 安装之前依赖项 General dependencies sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler sudo apt-get install --no-install-recommends libboost-all-dev 安装matlab见后面: 为什么需要安装Matlab? caffe有Matlab的接口,因此如果需要使用Matlab调用caffe,进行编程,就需要安装Matlab。如果你觉得使用C或Python编程比较难,就请安装Matlab。当然如果不需要,并且后面不会编译caffe生成Matlab的接口,就不需要安装Matlab了。这个纯粹根据个人需求来定。 为什么需要安装OpenCV? caffe是用来做深度学习的,深度学习的一大应用对象就是图像和视频。而OpenCV是目前最火的开源计算机视觉库,非常多的项目多用到了OpenCV,当然caffe也依赖OpenCV。所以,需要安装OpenCV

半个月每天到处搜集数据,结果Python爬虫轻轻松松做到了

无人久伴 提交于 2020-01-23 01:07:15
Python是一门非常简单易学好用,同时功能强大的编程语言,具有丰富和强大的库,开发效率特别高。 Python爬虫能做什么 世界上80%的爬虫是基于Python开发的,学好爬虫技能,可为后续的大数据分析、挖掘、机器学习等提供重要的数据源。 什么是爬虫? 网络爬虫通俗的讲就是通过程序去获取web页面上自己想要的数据,也就是自动抓取数据。 爬虫可以做什么? 你可以用爬虫爬图片,爬取视频等等你想要爬取的数据,只要你能通过浏览器访问的数据都可以通过爬虫获取。 什么是Python? Python(大蟒蛇)是一门解释型、面向对象、带有动态语义的高级程序设计语言。 Python具有强大而丰富的类库,也经常被别人说是胶水语言,可以跟其它语言写的模块结合在一起。 1.简单: Python是一种代表简单主义思想的语言。 2.易用: Python简单容易上手,因为有简单容易看懂的文档。 3.速度快: 运行速度快,因为Python中的标准库和第三方库都是C语言编写的,所以很快。 4.免费、开源: Python是一款FLOSS(自由/源代码软件)之一,使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。 5.高层语言: 用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。 6.可移植性: 由于它的开源本质

如何保护你的 Python 代码 (一)—— 现有加密方案

独自空忆成欢 提交于 2020-01-23 00:33:08
https://zhuanlan.zhihu.com/p/54296517 0 前言 去年11月在PyCon China 2018 杭州站分享了 Python 源码加密 ,讲述了如何通过修改 Python 解释器达到加解密 Python 代码的目的。然而因为笔者拖延症发作,一直没有及时整理成文字版,现在终于战胜了它,才有了本文。 本系列将首先介绍下现有源码加密方案的思路、方法、优点与不足,进而介绍如何通过定制 Python 解释器来达到更好地加解密源码的目的。 由于 Python 的动态特性和开源特点,导致 Python 代码很难做到很好的加密。社区中的一些声音认为这样的限制是事实,应该通过法律手段而不是加密源码达到商业保护的目的;而还有一些声音则是不论如何都希望能有一种手段来加密。于是乎,人们想出了各种或加密、或混淆的方案,借此来达到保护源码的目的。 常见的源码保护手段有如下几种: 发行 .pyc 文件 代码混淆 使用 py2exe 使用 Cython 下面来简单说说这些方案。 1 发行 .pyc 文件 1.1 思路 大家都知道,Python 解释器在执行代码的过程中会首先生成 .pyc 文件,然后解释执行 .pyc 文件中的内容。当然了,Python 解释器也能够直接执行 .pyc 文件。而 .pyc 文件是二进制文件,无法直接看出源码内容。如果发行代码到客户环境时都是

Python自动化开发学习的第一周----python基础学习

社会主义新天地 提交于 2020-01-22 23:53:08
1.Python的发展史 1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。 1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。 Granddaddy of Python web frameworks, Zope 1 was released in 1999 Python 1.0 - January 1994 增加了 lambda , map , filter and reduce . Python 2.0 - October 16, 2000,加入了内存回收机制,构成了现在Python语言框架的基础 Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 诞生 Python 2.5 - September 19, 2006 Python 2.6 - October 1, 2008 Python 2.7 - July 3, 2010 In

Python刷题之路,怎样做才能让技术突飞猛进

冷暖自知 提交于 2020-01-22 21:27:21
比你优秀的人比你还努力 这个世界最可悲的就是 , 比你优秀的人比你还努力 偶然的机会,通过Python认识了一位华为的文职工作人员。起初只是问我,Python初学者看什么书能快速入门。而两个月过后,她已经开始每天在Leecode上刷题了。虽然有时半夜微信收到她刷题刷到崩溃的消息,或者针对部分Python语法的疑问,但作为一位文职大厂的优秀员工,她却比很多本该靠着代码吃饭的人更为努力。 今天这篇文章,就写给那些希望学习Python,但在刷题路上迷茫或者找不到方向的朋友们。文章仅代表个人观点,不喜勿喷。 Leecode刷题 起初学习python,我就是秉承着什么好玩学什么的想法,东一榔头西一棒子的跳着模块学习。看着很多方面都有所涉及,但遇到正儿八经的开发代码时,就歇菜了。基础的字符串、列表、字典操作,都经常出错。后来才意识到,为了学习模块而去学习,那只是高屋建瓴,底子差是硬伤。 一开始看到菜鸟教程上有Python100练,就在网上找了个打包好的全套练习题,PDF下载地址在我之前发的文章中: Python面试的一些心得,与练习题分享 这套题型挺全面的,但是基础和算法的内容比较少,所以开始去Leecode刷题。今天就借着前几天这位朋友问的一道题,谈谈如何在刷题中终结知识,提高刷题效率吧。 刷题案例 在引用朋友的代码前,提前和她打了个招呼: 我真的是很认真去写文章的,第一句话只是寒暄而已

python大战机器学习——半监督学习

送分小仙女□ 提交于 2020-01-22 21:11:50
  半监督学习:综合利用有类标的数据和没有类标的数据,来生成合适的分类函数。它是一类可以自动地利用未标记的数据来提升学习性能的算法 1、生成式半监督学习   优点:方法简单,容易实现。通常在有标记数据极少时,生成式半监督学习方法比其他方法性能更好   缺点:假设的生成式模型必须与真实数据分布吻合。如果不吻合则可能效果很差。而如何给出与真实数据分布吻合的生成式模型,这就需要对问题领域的充分了解 2、图半监督学习 (1)标记传播算法:   优点:概念清晰   缺点:存储开销大,难以直接处理大规模数据;而且对于新的样本加入,需要对原图重构并进行标记传播 (2)迭代式标记传播算法:   输入:有标记样本集 Dl ,未标记样本集 Du ,构图参数δ,折中参数α   输出:未标记样本的预测结果 y    步骤:     1)计算 W     2)基于 W 构造标记传播矩阵 S     3)根据公式初始化 F<0>     4)t=0     5)迭代,迭代终止条件是 F 收敛至 F* :        F <t+1>=α SF <t>+(1-α) Y       t=t+1     6)构造未标记样本的预测结果yi     7)输出结果 y   LabelPropagation实验代码: 1 import numpy as np 2 import matplotlib.pyplot as

python进阶-算法

谁都会走 提交于 2020-01-22 20:16:46
算法:解决问题的方法和步骤 评价算法的好坏:渐近时间复杂度和渐近空间复杂度。 渐近时间复杂度的大O标记: - 常量时间复杂度 - 布隆过滤器 / 哈希存储 - 对数时间复杂度 - 折半查找(二分查找) - 线性时间复杂度 - 顺序查找 / 桶排序 - 对数线性时间复杂度 - 高级排序算法(归并排序、快速排序) - 平方时间复杂度 - 简单排序算法(选择排序、插入排序、冒泡排序) - 立方时间复杂度 - Floyd算法 / 矩阵乘法运算 - 几何级数时间复杂度 - 汉诺塔 - 阶乘时间复杂度 - 旅行经销商问题 - NP 排序算法(选择、冒泡和归并)和查找算法(顺序和折半) 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 函数: def select_sort(origin_items, comp=lambda x, y: x < y): """简单选择排序""" items = origin_items[:] for i in range(len(items) - 1): min_index = i for j in range(i + 1, len(items)): if

Python排序算法(六)——归并排序(MERGE-SORT)

半世苍凉 提交于 2020-01-22 20:16:17
有趣的事,Python永远不会缺席! 如需转发,请注明出处: 小婷儿的python https://www.cnblogs.com/xxtalhr/p/10800699.html 一、归并排序(MERGE-SORT)概念   归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。归并排序适用于子序列有序的数据排序。 1、原理   归并排序是分治法的典型应用。分治法(Divide-and-Conquer):将原问题划分成 n 个规模较小而结构与原问题相似的子问题;递归地解决这些问题,然后再合并其结果,就得到原问题的解。从上图看分解后的数列很像一个二叉树。 归并排序采用分而治之的原理: 将一个序列从中间位置分成两个序列; 在将这两个子序列按照第一步继续二分下去; 直到所有子序列的长度都为1,也就是不可以再二分截止。这时候再两两合并成一个有序序列即可。                原理如上图,图片来源于https://blog.csdn.net/su_bao/article/details/81053871 2、举例 对以下数组进行归并排序:  [11, 99, 33 , 69, 77, 88, 55, 11, 33, 36,39, 66, 44, 22]   2. 首先,进行数组分组,即