python基础-廖雪峰

【廖雪峰Python教程】一、python基础 廖雪峰python教程第一章内容及易错点总结❀ 阅读详情

高级特性:
迭代:
只要是可迭代对象,都可以使用for循环进行迭代
python中使用for 。。。in
迭代多个值,如
d = {‘a’:1,‘b’:2}
for k,v in d.items

要对list实现类似java下标循环可以使用enumerate函数

切片:
去list或者tuple部分元素,python提供了比较好的切片工具

创建0-99的数列
L = list(range(100)) 这个是列表生成式
L[:10]表示取前10个数0-9
L[:10:2]表示取前10个数,每个数步长为2,就是0,2,4,6,8
循环的语句比较繁琐,列表生成式可以一行语句就解决
如:[x*x for x in range(1,11)]

多个变量取值

if …else生成式的原则是:如果if在for前面,后面一定要加else,如果在for后面,不允许带else,因为跟在for后面是一个筛选条件

生成器:

generator创建有很多方法,需要把[]改成()
如
g = (x *x for x in range(10))
可以通过next()函数获得生成器的下个返回值
,生成器保存的是算法,每次调用next(),如果没有更多元素,会抛出StopIteration错误
因为生成器也是可迭代对象,所以也可以使用for

生成器使用多的打印可以用yield

迭代器:
使用for循环的数据类型有:
集合数据类型,如list,tuple等
生成对象,包括生成器和带yield的一般方法
直接作用于for循环的对象我们成为可迭代对象,Iterable
判断一个对象是否是可迭代对象 isinstance()

迭代器:是可以被next()函数调用并返回下一个值得对象Iterator
同样可以用isinstance()判断是否是迭代器对象

生成器都是Iterator对象,但是list,dict虽然可迭代,但不是迭代器
可以使用iter()把他们变成迭代器

这里理解下Python的Iterator对象表示的是一个数据流,可以被next()函数调用,直到没有数据抛出StopIteration错误

函数式编程
高阶函数
map/reduce
map()接收两个参数,一个是函数,一个Iterable,返回的结果是Iterator
如 f(x) = x*x

reduce是把一个函数作用在一个序列上,这个函数必须接受两个参数,reduce的任务就是把结果和序列的下一个元素做累计计算,
如

map返回的是是Iterator,而reduce第二个参数就是需要一个可迭代对象
外加lambda函数进一步简化

filter函数,用于过滤序列,实现筛选
与map接收参数一样,区别在于函数会作用每个元素,根据返回值保留元素
如,一个list值要奇数

比如用filter求素数
思路:
使用埃式筛法

这里补充一点yeild的功能,它的出现就代表着生成器,类似于return
https://blog.youkuaiyun.com/mieleizhi0522/article/details/82142856?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159880396919725219961679%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=159880396919725219961679&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_click~default-2-82142856.first_rank_ecpm_v3_pc_rank_v4&utm_term=yeild&spm=1018.2118.3001.4187
再回到这个问题

sorted
排序算法也是程序中经常碰到的算法,排序的核心是比较两个元素的大小,数字可以直接比较,字符串和dict比较需要通过函数抽象出来
对list进行排序

sorted函数还可以加key函数实现自定义排序

按照不考虑大小写,进行翻转排序

返回函数
有时候我们不需要立马得到运算结果,可以将其整体构造函数,返回函数值即可

上面例子就是返回sum值,详细的内容在里面写
只有当初始化函数的时候才会打印出最后的求和结果

匿名函数
有时候我们不需要显示地定义函数,直接传入匿名函数比较方便,世界上lambda就是匿名函数的关键字
如上面提到的求平方
用lambda表示就是list(map(lambda x:x*x,[1,3,5,7,9]))
lambda那块实际上就是循环的语句

也可把匿名函数当做返回值返回
def build(x,y):
return lambda:xx+yy

装饰器
将函数当做一个对象,而函数对象也可以赋值给变量,通过变量同样可以调用函数
装饰器的功能就是不改变原有的代码,在此基础上新加的功能。
这种动态增加功能的方式,称为装饰器(decorator)
调用装饰器的时候只需要@+函数名

偏函数
目的是转换成自己想要的进制

作用域
模块中定义的函数和变量有些是希望给别人用的,有些事仅仅内部模块使用,通过_前缀实现
类似 _abc,private的函数和变量不应该被直接引用,可以作为代码封装和抽象

第三方模块
使用pip,这种方法呢速度比较慢,通常我们使用
anaconda自带的模块,直接导入即可,如import sys

面向对象编程
类和实例
python中一切皆对象,对象最重要的概念就是类和实例
object是所有类都会继承的类
class +类名(object):
实例化类:类名+()即可
在定义一个类时,可以把必须绑定的属性强制填写进去,使用__init__方法

上面就实现了name,score属性绑定
self就指向创建的实例本身,实例化的时候self不需要传

在类中定义函数可以实现封装,在实例化的时候只需要调用类名,不需要知道内部怎么实现的

访问限制
有时候我们不希望外部能够修改内部的属性值,所以在属性的名称前加__,变成私有变量

但是如果需要获取属性怎么办 呢
可以添加get,set方法,通过这种方法可以避免传入无效的参数
继承和多态
继承就是在把类名放到()中
其实当我们定义了一个类时,就是将数据类型定义了

判断某个变量是否是某个类型时用isinstance()方法
多态就是当我们新增子类的时候,只需要接受父类型就可以了,可以使用父类的方法

如何获得对象的信息
比如现在我们拿到一个对象的引用,如何知道它是什么类型、有哪些方法呢
使用type()函数,

获取一个对象的所有属性和方法,使用dir()函数

实例属性和类属性

所以实例属性和类属性的名称尽量不要一样

面向对象高级编程
使用__slots__
当我们只允许某个实例添加属性,就可以在定义类的时候添加__slots__变量

该变量只对当前类实例起作用,对继承的子类是不起作用的
使用@property

这种方式略显复杂,设置实例的范围
有没有既能检查参数,又可以用类似属性这样简单的方式来访问类的变量呢?
装饰器就可以给函数动态加上功能,@property就是如此

多重继承
当分类的方法增加时,类的数量定义就会呈指数增长,这样设计不行的,正确做法是多重继承
就是把所有功能的类定义好,最后多继承一个类

这种设计被称为Mixln

定制类
带有__的变量或者函数,这在python中有特殊用途
slots 限定属性或者方法
len 能让class作用于len()
str 返回一个好看的字符串
iter 一个类想被用于for 。。。in循环,就必须实现__iter__()方法,该方法返回的是一个迭代对象,
getitem ,for循环中,能够像list那样按照下标取出元素,
getattr 有时候调用不存在的属性时会报错,这个时候除了加上一个属性外,还可以使用__getattr__()方法,动态返回一个属性
call 一个对象实例可以有自己的属性和方法,直接实现调用

枚举类
当我们定义常量时,一个办法就是大写变量通过整数定义
好的方法是定义个class类型,然后每个常量都是class的一个唯一实例
使用Enum类实现

使用元类
动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的。
这里需要以下type,object,class的区别
先定义metaclass,就可以创建类,最后创建实例
比较难的一个类

错误处理
程序编写有问题,称为bug
用户自身造成的,用户输入的格式不正确
异常现象,比如网络突然中断
open()打开文件的函数
错误处理机制
try… except…finally

抛出错误,首先定义一个错误的class,然后选择好继承关系,然后使用raise语句抛出一个错误的实例
这个方式就是讲错误交给最后能解决的那个对象

调试
调试的目的就是需要知道到底出错在哪里,从而来解决bug
第一种调试方式就是 通过print()把可能有问题的变量打印出来
第二种方法是通过断言来替代,这样可以变后面删除大量的print

启动python解释器时可以用-O 参数来关闭assert
第三种就是使用logging,它不会抛出错误,而且可以输出到文件
logging.info()
import logging
logging.basicConfig(level = logging.INFO)
s = ‘0’
n = int(s)
logging.info(‘n = %d’ %n)
print(10/n)

这就是logging的好处,它允许你指定记录信息的级别,有debug,info,warning,error等几个级别,当我们指定level=INFO时,logging.debug就不起作用了。同理,指定level=WARNING后,debug和info就不起作用了。这样一来,你可以放心地输出不同级别的信息,也不用删除,最后统一控制输出哪个级别的信息。

logging的另一个好处是通过简单的配置,一条语句可以同时输出到不同的地方,比如console和文件。
第四种调试就是使用python的调试器pdb,程序单步方式运行
第五种就是IDE了,也是我们比较常用的工具
Pycharm和Visual Studio Code(需要安装python插件)
Eclipse加上pydev插件也可以调试python程序
logging才是终极武器。

单元测试
单元测试就是对一个模块、一个函数或者一个类来进行正确性检验的测试工作
比如abs(),我们需要编写几个测试用例

这种以测试为驱动的开发模式最大的好处就是确保一个程序模块的行为符合我们设计的测试用例。在将来修改的时候,可以极大程度地保证该模块行为仍然是正确的。

当你在单元测试中启动一个数据库时,最好的方法就是从公共方法中连接,这样就不需要每个测试方法都重复相同的代码
class TestDict(unittest.TestCase):
def setUp(self):
pass
def tearDump(self):
pass

文档测试,是为了方便调用者理解函数的输入和输出

IO编程
即所谓的input/output,程序和运行时数据都是在内存中驻留,数据交换的方法通常是磁盘、网络、所以需要IO接口
接收数据叫input,外发数据叫output
从磁盘读取文件到内存,只有input操作,相反,把数据写到磁盘,就只有output
整个操作的对象是Stream
流相当于水管,数据类似水,只能单向流动
由于CPU、内存、外设的数据传输速度不一样,就存在传输不匹配
有两种方法解决这个问题
第一、同步IO,即等数据完全写入磁盘,在交给cpu去处理
第二、异步IO,CPU不等待,磁盘的传输不影响程序的执行
同步异步区别:
是否等待IO执行的结果,同步就是需要等待执行的结果

文件读写
读写文件的功能都是由操作系统提供,所以,读写文件就是请求操作系统打开一个文件对象。然后通过操作系统提供的接口从这个文件对象中读取数据,或者把数据写入这个文件对象(写文件)
读文件:open()
f = open(‘/users/michael/test.txt’,‘r’)

如果文件不存在,是会抛出IOError的,有时候我们需要处理这个异常

打开文件后使用read()方法可以一次读取文件的全部内容,python读到的内容是用str对象表示
f.read()

最后是调用close()方法关闭文件
不关闭会占用系统资源
f.close()

结合上面的思路,正常读文件的代码
try:
f = open(‘/path/usr/tex.txt’,‘r’)
print(f.read())
finally:
if f:
f.close()

这样写也比较繁琐,python提供了with()方法,这个方法就是对资源的配置
with open(‘/path/usr/tex.txt’,‘r’) as f:
print(f.read())

其中read()、read(size)、readlines()是有区别的

上面这种读取的对象在python中统称为file-like Object
StringIO就是在内存中创建的file-like Object,常用作临时缓冲
二进制文件(图片、视频)
读取文件,后面的模式用rb,还可以传入encoding参数
如

f = open(‘/Users/michael/test.jpg’, ‘rb’)
f.read()
b’\xff\xd8\xff\xe1\x00\x18Exif\x00\x00…’ # 十六进制表示的字节

有时候文件夹杂着些非法编码字符,可以设置参数errors,最直接的处理方式是忽略

写文件
同样是调用open,唯一区别是传入的模式不同,读文件是r或者rb,而写则是w或者wb或者a
然后调用的是write()方法
还是使用with是最保险的
with open(‘user/a/r.txt’,‘w’,errors=‘ignore’)as f:
f.write(‘abc’)

StringIO和BytestIO
第一个就是在内存中读取str
把str写入StringIO,需先创建一个StringIO,然后像文件一样写入即可

第二个方法是操作二进制数据的

操作文件和目录
python使用OS模块
需要导入os模块
os.environ 查看环境变量
os.name 查看操作系统类型
os.uname 查看系统详细信息
os.environ.get(‘key’)获得某个环境变量的值
操作文件和目录的函数一部分在os模块,一部分在os.path模块
os.path.abspath(‘.’) 查看当前目录绝对路径
os.mkdir(‘/user/a/b’) 创建一个目录
os.rmdir(’user/a/b‘)删除一个目录
合并两个路径,不要直接拼接字符串,使用函数
os.path.join()函数
这样可以正确处理不同操作系统的路径分隔符
如os.path.join(‘user/a’,‘testdir’)

拆分路径的话,使用os.path.split()函数
os.path.splitext()可以直接得到文件扩展名

复制文件不是操作系统提供,需要使用shutil模块提供的copyfile()函数
最后看看如何使用python的这些特性来过滤文件
实例1,列出当前目录下的所有目录
[x for x in os.listdir(‘,’ if os.path.isdir(x)]

实例2,列出所有.py文件
[x for x in os.listdir(‘.’) if os.path.isfile(x)and os.path.splitext(x)[1]==‘.py’]

序列化
把变量从内存中变成可存储或传输的过程称之为序列化,在python叫picking,其他语言也被称为serialization,flattening等
序列化之后就可以把内容写入磁盘,或者传输到别的机器上
反过来我们把序列化的对象重新读到内存里称为反序列化,即unpicking
python中pickle模块是来实现序列化
pickle.dumps(d)将对象d序列化成一个bytes
pickle.dump(d,f)将对象d序列化后写入一个file-like object
pickle.loads()反序列化出对象
也可直接pickle.load()从一个file-like object直接反序列化出对象

不同编程语言之间对象传递,最好是序列化为JSON或者xml
JSON表示的对象就是标准的JavaScript语言的对象

python有内置的json模块,可以实现python对象到json的转换

python的os模块封装了常见的系统调用,包括fork
fork在Windows无法调用,可以使用multiprocessing模块替代
Process类代表一个进程对象

正则表达式:
用描述性的语言定义一个规则,凡是符合规则的字符串就是匹配的
\d 匹配一个数字
\w匹配一个字母或数字
.匹配任意字符
*匹配任一个字符
+表示至少一个字符
?表示0或1个字符
{n}表示n个字符
{n,m}表示n-m个字符
\s匹配一个空格(也包括tab等空白符)
特殊字符需要用转义’\‘
比如- 就可以表示成-
更精确的匹配,可以使用[]表示范围
[0-9a-zA-Z_]可以匹配一个数字、字母或者下划线
^表示行的开头 ^\d表示必须以数字开头
KaTeX parse error: Undefined control sequence: \d at position 8: 表示行的结束 \̲d̲表示必须以数字结束
()表示提取的分组,通常作为提取子串

python中提供了re模块,包含所有正则表达式功能

内建模块
datetime库:
datetime.now()当前时间
d.timestamp()时间转换成时间戳形式
datetime.fromtimestamp(t) 时间戳t转换成datetime
时间戳也可以直接转换成utc时间
datetime.utcfromtimestamp(t)
datetime.strtime(‘2015-6-1 18:19:59’,‘%Y-%m-%d %H:%M:%S’)
str 转换成datetime,后面的字符串规定了日期和时间部分的格式
d.strftime() datetime转换成str

datetime加减,但是需要导入timedelta这个类

本地时间转utc
from datetime import datetime,timedelta,timezone
tz_utc_8 = timezone(timedelta(hours = 8))

时区转换
先拿到当前的UTC时间,在转化
utc_dt = datetime.utcnow().replace(tzinfo = timezone.utc)
#表示拿到utc时间,并强制设置时区为utc+0:00
bj_dt = utc_dt.astimezone(timezone(timedelta(hours = 8)))
#转换成北京时间

collections库
namedtuple 创建一个自定义tuple对象,
Circle = namedtuple(‘Circle’,[‘x’,‘y’,‘r’])

deque 是为了高效实现插入和删除操作的双向列表
支持append,pop,appendleft,popleft

廖雪峰python教程(1)——基础+函数章节 1. 字符编码 【1】廖雪峰python教程——字符串和编码 【2】彻底弄懂 Unicode 编码 1个字节能表示的最大的整数就是255(二进制11111111=十进制255) 2个字节可以表示的最大整数是65535 4个字节可以表示的最大整数是4294967295 编码类型 内容 问题 ASCII 目前为止共定义了128个字符,包括大小写字母、数字和一些符号,如A-65,... 阅读详情

相关推荐

【廖雪峰python教程学习】——(一)python基础

数据类型和变量 Python还允许用r’’’'表示内部的字符串默认不转义 如果字符串内部既包含’又包含" 可以用转义字符\来标识 Python允许用’’’ … ‘’'的格式表示多行内容 在Python中赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量[动态语言] [静态语言:Java…]在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错 在Python中,通常用全部大写的变量名表示常量 print(*objects, sep=' ', end

msmxsd的博客 5177

廖雪峰Python 2.X 教程

Python简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。 现在,全世界差不多有600多种编程语言,但流行的编程语言也就那么20来种。如果你听说过TIOBE排行榜,你就能知道编程语言的大致流行程度。这是最近10年最常用的10种编程语言的变化图: 总的来说,这几种编程语言各有千秋。C语言是可以用来编写操作

GarfieldEr007的专栏 2万+

廖雪峰Python与Python基础教程第二版实战大全

控制结构是程序流程的骨架,包括条件判断、循环控制等。Python提供了if、elif、else用于实现分支结构,for和while用于实现循环结构。函数是组织和重用代码的有效工具。在Python中定义函数使用def关键字,可以设置默认参数和可变参数。函数的参数分为位置参数和关键字参数,参数传递是引用传递,但需要注意的是不可变数据类型(如int、string、tuple等)在函数内被修改时,实际上是在创建新的对象。下面是使用函数和控制结构进行编程的一个例子:return 0# 测试函数。

weixin_42515340的博客 1074

廖雪峰-Python教程

Python内置库、第三方库命令行模式:在Windows下,执行一个.py文件# python 文件名.pyPython交互模式:">>>"可变对象:list不可变对象(整数、小数、字符串、tuple):调用自身任意的方法,不会改变该对象自身的内容;

weixin_52024993的博客 5439

廖雪峰官方网站Python编程题库与基础代码实战

在Python中,变量是存储数据的容器。它们不需要声明类型,可以在使用前直接赋值。接下来将介绍如何定义变量以及进行简单的数据操作。# 变量定义age = 25# 变量使用在上述代码中,我们定义了两个变量age和name并分别赋值为整数和字符串。然后使用格式化字符串(f-string)打印出变量内容。值得注意的是,变量类型在使用过程中会自动推导,Python是动态类型语言,这简化了编程过程。函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段。

weixin_34779181的博客 955

Markdown编辑器介绍

这篇文章介绍了Markdown编辑器的功能和使用方法。主要内容包括:Markdown的基本语法如标题、列表、链接插入等;新增功能如图片拖拽、数学公式支持、甘特图和UML图表绘制;常用快捷键说明;以及文本导出导入操作。文章详细说明了如何通过Markdown语法实现文本格式化、代码高亮、表格创建等功能,并提供了多种图表绘制的语法示例,帮助用户更好地利用Markdown编辑器进行写作和内容创作。

soso1968的博客 1181

Python基础教程廖雪峰云-Python基础教程

Python基础教程廖雪峰云-Python基础教程 去发现同类优质开源项目:https://gitcode.com/ 资源描述 本仓库提供了一个名为 python基础教程廖雪峰云-Python基础教程.pdf 的资源文件下载。该文件是一份详细的Python基础教程,由廖雪峰云提供。 内容简介 该教程涵盖了Python编程的基础知识,特别针对脚本语言的第一行 #!/usr/bin/python 进行...

gitblog_06642的博客 1008

NT35310 - LCD显示屏

NT35310 是一个低功耗、26 万色、单芯片的 TFT-LCD 控制器/驱动器,分辨率 480*320,它有一个 345600 字节的显示 RAM 和一整套控制功能。NT35310 支持数字接口(MDDI),MIPI 接口,RGB 接口,8 / 9 / 16 / 18 位8080 接口。可以实现指定的窗口区域可以有选择地更新,以便可以显示运动图像。同时也可以独立显示静止的图像区域。...

m0_62444125的博客 3323

一、Python基础——python廖雪峰学习笔记

学习来源:python廖雪峰个人网站https://www.liaoxuefeng.com/wiki/1016959663602400 另一个不错的网站:菜鸟教程(包含,python,Java,PHP等多种语言,资源全部免费)https://www.runoob.com/python3/python3-tutorial.html python安装:用的最新的的python3.7.0,cmd命令...

qq_38025771的博客 468

智能体评测技术与实践:从评估维度到DeepEval实战指南

智能体评测技术与实践:从评估维度到DeepEval实战指南 本文系统探讨了AI智能体的评测体系与实践方法。首先从四个关键维度构建评估框架:基础能力(意图理解、知识完整性)、复杂任务(多轮对话、动态工作流)、可靠性(幻觉抑制、安全合规)以及工具效率(参数填充、多工具协同)。其次分析了主流评测工具,包括xBench的动态双轨评估、DeepEval的全链路监控等解决方案。最后详细介绍了DeepEval的实战应用,涵盖环境配置、测试用例构建、指标配置及CI/CD集成,展示了如何通过代码化评估实现智能体质量的持续提升

Linda的自动化测试之旅 3418

D类功放LC滤波器实战:从Q值0.707到EMI优化的完整设计流程

本文详细解析了D类功放LC滤波器的完整设计流程,从确定截止频率与Q值0.707的理论基础出发,到参数计算、仿真验证及关键元器件选型,并提供了应对EMI超标和过流保护等实际问题的进阶调试策略。文章强调,精准的LC滤波器设计是平衡音质、稳定性与电磁兼容性的关键,尤其需关注电感饱和电流与电容直流偏置等细节。

e4f5g6h7的博客 1036

廖雪峰《python3 基础教程》 读后感悟总结

用了近3周时间,几乎每天一章的速度读完了廖雪峰《python3 基础教程》,感悟如下: 1、python入手比C/C++快的多。 C/C++需要几年时间方才上手,python可以迅速上手,6-12个月即可以应用python做项目开发。 2、作为机器学习、人工智能、前端开发、脚本编程,python是务必要掌握的一门语言。 对个人发展来说,研究方向侧重于数据处理、算法、控制,C/C++,再加上

专注极致 9213

量化回测系统实战指南:从VectorBT到自研框架的深度解析

本文深入解析量化回测系统实战,从VectorBT和Backtesting.py的对比到自研框架miniQuant的设计与优化。探讨如何平衡速度与灵活性,解决实盘适配性问题,并提供性能调优技巧和可视化分析工具,帮助开发者构建高效可靠的量化交易系统。

weixin_28308325的博客 277

廖雪峰Python的研读笔记(一) Python基础、函数、高级特性

前言 Python基础 字符串和编码 循环 使用dict和set 函数 调用函数 函数的参数 递归调用 高级特性 切片 迭代 列表生成器 生成器 迭代器

SchRHT Blog 2386

YOLOv12涨点改进 | 独家创新-注意力改进篇 | ECCV 2024 | YOLOv12引入AgentAttention代理注意力模块,兼顾 Softmax 和线性注意力优点,提高检测精度

🔥本文给大家介绍使用Agent Attention模块改进YOLOv12网络模型。其主要作用是通过引入高效的代理token来减少计算复杂度,同时保留全局上下文建模能力。相比传统的Softmax注意力,Agent Attention通过代理token聚合并广播信息,从而降低了模型在处理高分辨率图像时的计算负担,并显著提高了推理速度。其优势在于保持了目标检测中的全局信息处理能力,同时加速了生成过程,特别是在高分辨率场景下,可以提高检测精度、减少内存消耗,并提升处理速度。

Ai缝合怪、助力小伙伴高效发论文 155

2024顶级提示工程工具:提升效率的12个神器

LlamaIndex虽然本身不是直接的提示词编辑工具,但其整个设计都围绕着如何有效地将外部知识融入LLM的提示词。它提供了结构化的方式来管理“上下文窗口”——即哪些私有数据应该被包含在提示词中。通过优化索引结构和检索策略,可以确保提示词中包含最相关、最高质量的上下文信息,从而大幅提升LLM基于私有数据回答问题的准确性和相关性。同时,LlamaIndex允许开发者针对不同的查询类型和数据特点定制提示词模板,这使得提示词的复用和优化更加系统化。

AIGC应用创新大全的博客 1099

廖雪峰Python基础笔记

python 1.第一个python程序 交互模式(>>>)退出用exit() 打印使用print()函数,打印的内容可以用单引号或者双引号括起来,但是不能够混用 命令行模式,可以输入python进入交互模式,也可以通过命令 python hello.py 来运行一个python文件 交互模式下查看py文件内容的命令 more hello.py,前提是在对应的文件目录下 交互模式下接收输入name=input() 然后通过name可以输出内容 2.python基础 注释以#号开头就是

chen2016的博客 479

【知识图谱】Neo4j基本操作及数据库文件导入(graph.db.dump)

初探Neo4j导入数据备份数据客户端操作导入csv文件指定csv文件格式使用命令行导入csv文件附录 请读者参考上篇博文 Neo4j安装教程 导入数据 若开启服务,先在终端停止 Neo4j 服务 ./neo4j stop 接下来,下载射雕三部曲的数据库文件 wget https://labfile.oss.aliyuncs.com/courses/1354/graph.db.dump 下载完将出现 graph.db.dump 文件: 将数据库文件导入到 Neo4j 中 首先进入neo4j 根目录下:

全网粉丝30W+,优快云、稀土掘金人工智能领域签约作者,人工智能、大模型、Python 爬虫,商务合作,请私信沟通。 8620

廖雪峰Python教程之python基础

Python学习(从廖雪峰老师的教程入手的,教程链接:廖雪峰的python教程) python装的是3.6版本,我建议新手直接装个Anaconda完事,里面集成了python以及用到的各种工具,我用的jupyter notebook编写代码,编译起来超级方便。 第一章:python基础 1.list和tuple (1) list(列表)list添加和删除一个元素,也等价于出栈和入栈操作. 1).出...

qq_39662852的博客 3365

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Python学习笔记---------廖雪峰(基础和函数)

Python学习笔记---------廖学峰(第一章和第二章)

weixin_45126202的博客 885

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

python基础教程廖雪峰云-为什么看不懂廖雪峰的Python学习教程?

廖雪峰的Python教程已经很友好了,接近于把饭喂到嘴边了。这不是廖雪峰教程的问题,而是一个基础代码技能和实际应用需求的代码技能差距太远导致的。如果是新手,只学会了廖雪峰Python教程,那约等于什么都写不出来。除了课后习题,什么都写不出来。就以知乎上泛滥的Python爬虫教程来看。在你掌握了Python基础语法之后,你还需要:简单的网络基础,包括套接字,HTTP是什么,为什么有这个东西,怎么用;...

q6q6q的专栏 435

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

廖雪峰《Python3 基础教程》读书笔记——第一、第二章

如何学习Python 一、过来人3点经验: 1、 找一本浅显易懂,例程比较好的教程,从头到尾看下去。不要看很多本,专注于一本。把里面的例程都手打一遍,搞懂为什么。我当时看的是《简明python教程》。 2、 去找一个实际项目练手。 3、 最好能找到一个已经会python的人。问他一点学习规划的建议(上知乎也是个途径),然后在遇到卡壳的地方找他指点。这样会事半功倍。但是,要学会搜索,学会

专注极致 1499

廖雪峰python教程——第一章 Python基础

第一章 Python基础 一、数据类型和变量 Python的数据类型包括整数、浮点数、字符串、布尔值、空值、变量、常量等。其中整数可以表示任意大小的整数;空值是Python里一个特殊的值,用None表示。 对于变量:Python中采用动态语言的方式,即变量本身类型并不固定,如下: a=100 #这里a是一个整数类型 a="abc" #这里a又变成了字符串类型 变量的另外一个重点需要理

老梧桐 2万+

廖雪峰python教程之python基础

Python是一种计算机编程语言。计算机编程语言和我们日常使用的自然语言有所不同,最大的区别就是,自然语言在不同的语境下有不同的理解,而计算机要根据编程语言执行任务,就必须保证编程语言写出的程序决不能有歧义,所以,任何一种编程语言都有自己的一套语法,编译器或者解释器就是负责把符合语法的程序代码转换成CPU能够执行的机器码,然后执行。Python也不例外。Python的语法比较简单,采用缩进方式,写出

夏天不能盖被子 6954

如何找到python廖雪峰基础_为什么看不懂廖雪峰的Python学习教程?

先不要怀疑自己的智商,也许是你完全没有编程基础,这个时候,可以选个视频课程看看,B站还有各路公开课上有很多,自己找找。或者觉得这样有点麻烦,那就花点钱,买个基础入门课程学学,试试下面的链接。我觉得可能是每个人思维方式不同,逻辑上有差异,有些人觉得很好的课程,在另外一些人看来,就觉得完全看不懂,不知道课程在讲什么,所以这个时候,怀疑自己是没有用的,更好的解决问题方式是换个教程。看不懂廖雪峰老师的学习...

weixin_28960699的博客 292

python基础教程廖雪峰云-Python3基础教程-廖雪峰[带标签完整版]

标签:Python教程... 5Python简介... 7安装Python. 12Python解释器... 16第一个Python程序... 18使用文本编辑器... 19Python代码运行助手... 25输入和输出... 28Python基础... 32数据类型和变量... 33字符串和编码... 43使用list和tuple. 53条件判断... 60循环... 64使用dict和set 6...

q6q6q的专栏 1901
上一篇: mysql基础知识速记
下一篇: FTP服务器搭建(windows10和window server 2012)
一刀小诗
博客等级 码龄14年 4粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值