终于放假了。。。上个星期一直在考试和备考,所以就托更啦。接下来的文本里面的东西,到后面还是比较难懂的,所以也花了比较久的时间。后面两章基本上没看懂,所以暂且放一放,先把书上的语法给看完。这一周主要看的就是接上上一次的内容,然后是控制流和块处理,最后是函数的一小部分。还有一些上一次遗留的问题。

#新建关键字,当关键字不存在时新建,存在时则保有原值
filled_dict.setdefault("five",5)
print(filled_dict)
filled_dict.setdefault("five",6)
print(filled_dict)
print()
#下面设置集合,可能有点像列表,但他可以避免设置相同的副本
#设置一个空集合
empty_set = set()
#初始化一个数字集合,里面存在两个相同的副本‘2’
some_set = set([1,2,2,3,4])
print(some_set)# =>{1,2,3,4}
#初始化一个无序集合,集合不能保证顺序,即使有时他看起来是有序的
another_set = set([7,2,5,6])
print(another_set)# =>{2,5,6,7}
add_another_set = set("apple")
print(add_another_set)# =>{'p','e','l','a'}
#自py2.7开始,花括号{}可以用来声明集合
filled_set = {1,2,2,3,4}
print(filled_set)# =>{1,2,3,4}
#在集合中添加一个成员
filled_set.add(5)
print(filled_set)# =>{1,2,3,4,5}
#求交集
other_set = {3,4,5,6}
print(filled_set & other_set)
# =>{3,4,5}
#求并集
print(filled_set | other_set)
# =>{1,2,3,4,5,6}
#求后集合对前集合的补集
print(filled_set - other_set)
# =>{1,2}
#求两集合非交集合
print(filled_set ^ other_set)
# =>{1,2,6}
#查询包含关系
print({1,2} >= {1,2,3})# =>False
print({1,2} <= {1,2,3})# =>True
#查询成员是否存在
print(2 in filled_set)# =>True
print(10 in filled_set)# =>False
print(10 not in filled_set)# =>True
#查询类型
print(type(li))# =>list
print(type(filled_dict))# =>dict
print(type(5))# =>int
print(type('i'))# =>str
print(type(filled_set))# =>set
#这一部分讲控制流,这和c语言非常相似,只要少许的不同
#先创建一个变量
some_var = 5
#现在要用if循环语句,注意书写规范
#程序凹凸有致对python很重要(对其他语言也一样,提高可读性)
if some_var > 10:print ("some_var is totally bigger than 10.")
elif some_var < 10:print ("some_var is smaller than 10.")
else:print ("some_var is indeed 10.")
#这和c语言很像,但要注意':'是英文输入法的,使用中文输入法会报错
#文本中虽然没有给print打括号,但是程序中依旧要打才能pass
'''该段输出 =>
some_var is smaller than 10.'''
print()
#用for循环遍历列表,然后输出语句
#使用{0}插入格式化语句
for animal in ["dog","cat","mouse"]:print("{0} is a mammal".format(animal))
'''该段输出 =>
dog is a mammal
cat is a mammal
mouse is a mammal'''
print()
#"range(num)"返回从0到num的数字列表,不包括num
for i in range(4):print(i)
'''该段输出 =>0123
'''
print()
#"range(lower,upper)"返回从极小值到极大值的数字列表,当然也不包含极大值
for i in range(4,8):print(i)
'''该段输出 =>4567
'''
print()
#while语句执行语句直到不再满足条件为止
x = 0
while x < 4:print(x)x += 1
'''该段输出 =>0123
'''
print()
#用try和except块处理异常,python2.6及以上
try:#使用raise引发一个错误raise  IndexError("This is an index error")
except IndexError as e:pass#pass只是一个停止操作指令,通常我们会在这里恢复
except(TypeError,NameError):pass#如果需要,可以一起处理多个异常
else:#try/except块的可选子句。必须跟在所有块之后 print("All good!")#仅当try中的代码未发生异常时运行
finally:#在任何情况下执行print("We can clean up resources here")
'''以上输出We can clean up resources here'''
#以上时文本资料,讲述的有点笼统,反正一开始看我是没看懂
#所以我在一些大佬的博客里参悟学习了一下,具体参考
#https://www.cnblogs.com/Lival/p/6203111.html
#主要意思就是,跑python的时候,一旦遇到一些异常,程序就会终止
#异常之后的代码就不会继续运行,而异常处理try…except,raise就是用来解决这个问题的
#try…except:
a = 10
b = 0
try:c = a / b#除数不能作为分母,这时候程序会报错print(c)
except ZeroDivisionError as e:#原本的报错交给except块进行处理print(e)
print("done")#该语句正常执行
'''运行结果为:
division by zero
done'''
#这样程序就不会因为异常中断
#try…except…else
#当没有异常发生的时候,else中的语句将会被执行
a = 10
b = 0
try:c = b / a#该语句正常print(c)
except (IOError,ZeroDivisionError) as x:#同时处理文件操作异常和0的运算错误print(x)
else:print("no error")#由于try语句正常,该语句正常打印
'''该段输出
0.0
no error'''
#下面是发生异常时的状况
try:c = a / bprint(c)
except (IOError,ZeroDivisionError) as x:print(x)
else:print("no error")#try发生异常,else不执行
'''该段输出
division by zero'''
#有没有else其实差不多,写在try里也是一样的
try:c = a / bprint(c)print("no error")#以上语句发生异常,该语句跳过
except (IOError,ZeroDivisionError) as x:print(x)
'''该段输出
division by zero'''
#raise我提供的那个博客可能由于版本原因,提供的例子是行不通的
#因为通过input输入的东西都属于字符型,所以我们修改一下程序
'''x = input("please input a number:")
if x.isdigit():print(x)
else:raise ValueError'''
#当x不全为数字时,则引发一个错误
#输入1.2时,发生异常
#输入1时,输出1
print()#对于with的那一段,原来我着实没看懂,you jump,i jump
#函数
#使用def创建一个新的函数
def add(x, y):print("x is {0} and y is {1}".format(x, y))return x + y
print(add(4, 5))
'''该段输出:
x is 4 and y is 5
9'''
#定义函数方式和c略有不同,但使用方法却是一样的
#x,y为形参,而4,5为实参,函数通过形参来传递实参
#不同的是,形参和实参不一定一一对应位置,但要求输入形参
print(add(y = 6,x = 5))
'''该段输出:
x is 5 and y is 6
11'''
#一样行得通
#也可以定义位置参数个数未定的函数,使用*号将其解释为元组
def varargs(*args):return args
print(varargs(1,2,3))# =>(1, 2, 3)
#也可以定义关键词参数个数未定的函数,使用**号将其解释为字典
def keyword_args(**kwargs):return kwargs
print(keyword_args(big="foot",loch="ness"))
# =>{'big': 'foot', 'loch': 'ness'}
#当然,也可以同时包含着两种参数
def all_the_args(*args, **kwargs):print(args)print(kwargs)
all_the_args(1, 2, a=3, b=4)
'''该段输出:
(1, 2)
{'a': 3, 'b': 4}'''
#反过来,我们也可以将形参传递给函数
args = (1, 2, 3, 4)
kwargs = {"a": 3, "b": 4}
all_the_args(*args)
'''该段输出:
(1, 2, 3, 4)
{}'''
all_the_args(**kwargs)
'''该段输出:
()
{'a': 3, 'b': 4}'''
all_the_args(*args, **kwargs)
'''该段输出
(1, 2, 3, 4)
{'a': 3, 'b': 4}'''
print()
#你可以传递args和kwargs这两个形参
#给其他接受同类型的参数的函数
#和c不一样的是,在调用函数的时候需要分别通过*号和**号展开他们
def pass_all_the_args(*args, **kwargs):all_the_args(*args, **kwargs)print(varargs(*args))print(keyword_args(**kwargs))
pass_all_the_args(*args, **kwargs)
#函数通过*号和**号识别元组和字典
'''该段输出:
(1, 2, 3, 4)
{'a': 3, 'b': 4}
(1, 2, 3, 4)
{'a': 3, 'b': 4}'''
print()
x = 5
def set_x(num):x = num#跟c一样,这里的x为函数内部的xprint(x)# =>43
def set_global_x(num):global x#声明x为全局变量,此时x为函数外部的xprint(x)# =>5x = numprint(x)# =>6
set_x(43)
set_global_x(6)
print()
#python独有的功能(我猜是这样翻译的)
def create_adder(x):def adder(y):return x + yreturn adderadd_10 = create_adder(10)
print(add_10(3))# =>13
#这样也可以
print(create_adder(10)(3))# =>13
#这里定义匿名函数
print((lambda x: x > 2)(3))# =>True
#lambda本身是一个函数,它能将自身赋给一个变量
#那么使用变量名的同时,便可以通过其调用lambda的语句
#跟直接定义一个函数差不多,但还有其他更神奇的用法
#下面的语句和上面的类似
compare = lambda x: x > 2
print(compare(3))# =>True
#下面讲高阶函数,高阶函数要求参数中包含函数
#map高阶函数,在python3里,map的返回值已经不是list(列表),而是iterators(迭代器)
print(map(add_10, [1, 2, 3]))# =><map object at 0x00000226516557F0>
#所以在这里需要转换类型
print(list(map(add_10, [1, 2, 3])))# =>[11, 12, 13]
#下面的max寻找每一组数中的最大值
print(list(map(max, [1, 2, 3], [4, 2, 1])))# =>[4, 2, 3]
#filter函数用于过滤序列,过滤掉不符合条件的元素,并组成一个新的列表
print(list(filter(lambda x: x > 5, [3, 4, 5, 6, 7])))# =>[6, 7]
#可以用列表([])更好的理解maps和filters,下面的只要有一定的英语水平,估计都能读得懂
#对于列表中的每一个数,分别调用上面声明的add_10函数,将结果搭建成一个新列表
print([add_10(i) for i in [1, 2, 3]])# =>[11, 12, 13]
#就列表中的每一个数,分别进行条件判断,输出符合条件的数,搭建一个新列表
print([x for x in [3, 4, 5, 6, 7] if x > 5])# =>[6, 7]
#也可以通过构造集合和字典({})来理解
#对0到5的数,分别进行**运算,将结果作为字典输出
print({x: x ** 2 for x in range(5)})# =>{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
#寻找字符串中包含于另一字符串的字符,将符合条件的字符,作为集合输出
print({x for x in 'abcddeef' if x in 'abc'})# =>{'a', 'c', 'b'}

说实在的,文章里讲的内容实在是快,没有学过一门语言的人接触起来可能会有点吃力,我也查找了很多很多的资料,才把一些函数和语法的意思弄懂。with和类那一块完全没有接触过,结果就吃瘪了,然后现在在菜鸟教程上恶补。有关python的一些小研究另外发一个。

和以往一样,希望大家能提出我的错误,包括中文翻译和自我理解的部分。谢谢!

从零开始的人工智能学习(二)相关推荐

  1. 从零开始的人工智能学习(序)

    很久没有写过博客,尤其是在这种科技学术类的论坛上,我更是廖有提笔.今年刚刚进入了大学,阴差阳错的进入了计算机学院的网络工程系.开始计算机学院并不是我的第一志愿,原本的第一志愿由于突然分出一门学科结果没 ...

  2. GO 从零开始的语法学习二

    for循环 if条件里不需要括号 err != nil 判断是否为空 func main(){const filename = "abc.txt"contents , err := ...

  3. 从零开始编写深度学习库(二)FullyconnecteLayer CPU编写

    从零开始编写深度学习库(二)FullyconnecteLayer CPU编写 博客:http://blog.csdn.net/hjimce 微博:黄锦池-hjimce   qq:1393852684 ...

  4. 【从零开始学深度学习编译器】十二,MLIR Toy Tutorials学习笔记一

    本笔记由学习MLIR Tutorials总结而成,欢迎批评指正. Chapter1: Toy语言和AST MLIR提供了一种Toy语言来说明MLIR的定义和执行的流程.Toy语言是一种基于张量的语言, ...

  5. 【人工智能学习】【十二】机器翻译及相关技术

    机器翻译及相关技术 机器翻译(MT)是将一种语言转换成另一种语言,语言之间表达一个含义用的词汇量是不同的,之前讲到的RNN.LSTM.GRU[人工智能学习][十一]循环神经网络进阶里的输出要么是多对多 ...

  6. AI 人工智能学习路线

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 相关视频资料下载见:https://blog.csdn.net/qwxwaty/article/de ...

  7. 从零开始的深度学习(一) 经典CNN网络 LeNet-5

    从零开始的深度学习(一) 经典CNN网络 LeNet-5 之前的四篇博客围绕着一个大作业项目来进行的入门,由于小白初涉,因此行文中有时侧重于某些并不重要的东西,同时也忽略了许多其实蛮重要的东西,再加上 ...

  8. 从零开始学python人工智能课程_从零开始学人工智能(12)--Python · 决策树(零)· 简介...

    原标题:从零开始学人工智能(12)--Python · 决策树(零)· 简介 感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直 ...

  9. B站疯传,一整套人工智能学习资料免费送,不谢!

    作为AI 初学者来说,最大的问题就是: 资料太多!!!看不完!!! 不知道如何取舍!!!人的精力有限!!! 大部分想转行AI算法岗位的都比较浮躁.跳槽的时候不得其法.虽然AI行业高薪,但是你却并不能掌 ...

最新文章

  1. Gradle Android客户端程序打包(基于gradle 2.10版本验证通过)
  2. 最小二乘法(多元)推导
  3. 没光驱怎么重装电脑系
  4. 傍腾讯,切阿里,拼多多的千亿瞒天术
  5. 在Service中发送广播被kill掉的Activity能不能收到?
  6. 推荐一个非常好玩的falsh游戏
  7. java url工具_UrlTool官方版|UrlTool (java Url转换工具)下载v1.1-乐游网软件下载
  8. 【Linux】查询 OS、CPU、内存、硬盘信息
  9. WAS集群系列(3):集群搭建:步骤1:准备文件
  10. AI+教育落地,百度大脑如何让校园更智能?
  11. Julia : win下cmd和repl中执行.jl程序
  12. html 嵌入编辑excel 开源_网页中嵌入Excel控件
  13. python pandas合并多个excel,Python pandas实现excel工作表合并功能详解
  14. 笔记本win7共享WIFI
  15. SpringBoot的报错找不到Mapper(解决:required a bean of type com.xxx.mapper.UserMapper that could not be found)
  16. mysql1026_mysql 启动错误1026
  17. 金色传说:SAP-FICO-参考加权因素维护执行成本中心分配 KSV5/KSV3报错GA603:系统错误:集01018000D06表CCSS读出错
  18. Android各版本的版本号、版本名、API及发布时间
  19. DNS云监控出现问题如何解决
  20. Dubbo(一):Dubbo 3.0

热门文章

  1. java啤酒厂设备管理系统
  2. 迅雷再见!在全球交友网站Github,找到的6款神软件
  3. 信用评分卡A卡、B卡、C卡区别
  4. 追溯功能是MES系统的关键
  5. 中国硬质合金行业运行格局及投资战略咨询研究报告2022-2028年
  6. 计算机应用研究催稿被拒了,【求助】两次催稿均无回复是否意味着文章已被拒?...
  7. 洛谷P1196 银河英雄传说
  8. python批量处理图片尺寸(将文件夹中所有图片设定为固定尺寸)
  9. STM32F103Mini移植RT-ThreadNano
  10. 在Excel中如何获取汉字拼音首字母?