基本控制结构python跳转结构_一文看懂Python的控制结构:for、while、if…都有了...
for循环列表
使用for循环的另一种常见模式是对列表进行迭代。
martial_arts = [ "Sambo", "Muay Thai", "BJJ"]
formartial_art inmartial_arts:
print( f" { martial_art}has influenced
modern mixed martial arts" )
'''输出:
Sambo has influenced modern mixed martial arts
Muay Thai has influenced modern mixed martial arts
BJJ has influenced modern mixed martial arts
'''
02 while循环
while循环是一种条件有效就会重复执行的循环方式。while循环的常见用途是创建无限循环。在本示例中,while循环用于过滤函数,该函数返回两种攻击类型中的一种。
defattacks:
list_of_attacks = [ "lower_body", "lower_body",
"upper_body"]
print( "There are a total of {lenlist_of_attacks)}
attacks coming!" )
forattack inlist_of_ attacks:
yieldattack
attack = attacks
count = 0
whilenext(attack) == "lower_body":
count += 1
print( f"crossing legs to prevent attack # {count}")
else:
count += 1
print( f"This is not lower body attack,
I will cross my arms for# count}" )
'''输出:
There are a total of 3 attacks coming!
crossing legs to prevent attack #1
crossing legs to prevent attack #2
This is not a lower body attack, I will cross my arms for #3
'''
03 if/else语句
if/else语句是一条在判断之间进行分支的常见语句。在本示例中,if/elif用于匹配分支。如果没有匹配项,则执行最后一条else语句。
defrecommended_attack(position):
"""Recommends an attack based on the position"""
ifposition == "full_guard":
print( f"Try an armbar attack")
elifposition == "half_guard":
print( f"Try a kimura attack")
elifposition == "fu1l_mount":
print( f"Try an arm triangle")
else:
print( f"You're on your own,
there is no suggestion for an attack" )
recommended_attack( "full_guard") #输出:Try an armbar attack
recommended_attack( "z_guard")
#输出:You're on your own, there is no suggestion for an attack
04 生成器表达式
生成器表达式建立在yield语句的概念上,它允许对序列进行惰性求值。生成器表达式的益处是,在实际求值计算前不会对任何内容进行求值或将其放入内存。这就是下面的示例可以在生成的无限随机攻击序列中执行的原因。
在生成器管道中,诸如 “arm_triangle”的小写攻击被转换为“ARM_TRIANGLE”,接下来删除其中的下划线,得到“ARM TRIANGLE”。
deflazy_return_random_attacks:
"""Yield attacks each time"""
importrandom
attacks = { "kimura": "upper_body",
"straight_ankle_lock": "lower_body",
"arm_triangle": "upper_body",
"keylock": "upper_body",
"knee_bar": "lower_body"}
whileTrue:
random_attack random.choices(list(attacks.keys))
yieldrandom attack
#Make all attacks appear as Upper Case
upper_case_attacks =
(attack.pop.upper forattack in
lazy_return_random_attacks)
next(upper-case_attacks)
#输出:ARM-TRIANGLE
## Generator Pipeline: One expression chains into the next
#Make all attacks appear as Upper Case
upper-case_attacks =
(attack. pop.upper forattack in
lazy_return_random_attacks)
#remove the underscore
remove underscore =
(attack.split( "_") forattack in
upper-case_attacks)
#create a new phrase
new_attack_phrase =
( " ".join(phrase) forphrase in
remove_underscore)
next(new_attack_phrase)
#输出:'STRAIGHT ANKLE LOCK'
fornumber inrange( 10):
print(next(new_attack_phrase))
'''输出:
KIMURA
KEYLOCK
STRAIGHT ANKLE LOCK
'''
05 列表推导式
语法上列表推导式与生成器表达式类似,然而直接对比它们,会发现列表推导式是在内存中求值。此外,列表推导式是优化的C代码,可以认为这是对传统for循环的重大改进。
martial_arts = [ "Sambo", "Muay Thai", "BJJ"]
new_phrases [ f"mixed Martial Arts is influenced by
(martial_art)" formartial_art inmartial_arts]
print(new_phrases)
[ 'Mixed Martial Arts is influenced by Sambo',
'Mixed Martial Arts is influenced by Muay Thai',
'Mixed Martial Arts is influenced by BJJ']
06 中级主题
有了这些基础知识后,重要的是不仅要了解如何创建代码,还要了解如何创建可维护的代码。创建可维护代码的一种方法是创建一个库,另一种方法是使用已经安装的第三方库编写的代码。其总体思想是最小化和分解复杂性。使用Python编写库
使用Python编写库非常重要,之后将该库导入项目无须很长时间。下面这些示例是编写库的基础知识:在存储库中有一个名为funclib的文件夹,其中有一个_init_ .py文件。要创建库,在该目录中需要有一个包含函数的模块。
首先创建一个文件。
touch funclib/funcmod.py
然后在该文件中创建一个函数。
"""This is a simple module"""
deflist_of_belts_in_bjj:
"""Returns a list of the belts in Brazilian jiu-jitsu"""
belts= [ "white", "blue", "purple", "brown", "black"]
returnbelts
importsys;sys.path.append( "..")
fromfunclib importfuncmod
funcmod.list_of_belts_in-bjj
#输出:['white', 'blue', 'purple', 'brown', 'black']导入库
如果库是上面的目录,则可以用Jupyter添加sys.path.append方法来将库导入。接下来,使用前面创建的文件夹/文件名/函数名的命名空间导入模块。安装第三方库
可使用pip install命令安装第三方库。请注意,conda命令(https://conda.io/docs/user-guide/tasks/manage-pkgs.html)是pip命令的可选替代命令。如果使用conda命令,那么pip命令也会工作得很好,因为pip是virtualenv虚拟环境的替代品,但它也能直接安装软件包。
安装pandas包。
pip install pandas
另外,还可使用requirements.txt文件安装包。
> ca requirements.txt
pylint
pytest
pytest-cov
click
jupyter
nbval
> pip install -r requirements.txt
下面是在Jupyter Notebook中使用小型库的示例。值得指出的是,在Jupyter Notebook中创建程序代码组成的巨型蜘蛛网很容易,而且非常简单的解决方法就是创建一些库,然后测试并导入这些库。
"""This is a simple module"""
importpandas aspd
deflist_of_belts_in_bjj:
"""Returns a list of the belts in Brazilian jiu-jitsu"""
belts = [ "white", "blue", "purple", "brown", "black"]
returnbelts
defcount_belts:
"""Uses Pandas to count number of belts"""
belts = list_of_belts_in_bjj
df = pd.Dataframe(belts)
res = df.count
count = res.values.tolist[ 0]
returncount
fromfunclib.funcmod importcount_belts
print(count_belts)
#输出:5类
可在Jupyter Notebook中重复使用类并与类进行交互。最简单的类类型就是一个名称,类的定义形式如下。
classCompetitor:pass
该类可实例化为多个对象。
classCompetitor:pass
conor = Competitor
conor.name = "Conor McGregor"
conor.age = 29
conor.weight = 155
nate = Competitor
nate.name = "Nate Diaz"
nate.age = 30
nate.weight = 170
defprint_competitor_age(object):
"""Print out age statistics about a competitor"""
print( f" {object.name}is {object.age}years old")
print_competitor_age(nate)
#输出:Nate Diaz is 30 years old
print_competitor_age(conor)
#输出:Conor McGregor is 29 years old类和函数的区别
类和函数的主要区别包括:函数更容易解释。
函数(典型情况下)只在函数内部具有状态,而类在函数外部保持不变的状态。
类能以复杂性为代价提供更高级别的抽象。
关于作者:挪亚·吉夫特(Noah Gift),加州大学戴维斯分校工商管理研究生院机器学习课程讲师,是AWS认证的架构师,也是AWS云端机器学习专家,长期为包括初创公司在内的企业提供机器学习、云架构和CTO级别的咨询服务。
本文摘编自《人工智能开发实践:云端机器学习导论》,经出版方授权发布。
延伸阅读《 人工智能开发实践》
点击上图了解及购买
转载请联系微信:DoctorData
推荐语:本书讲解Amazon、Google和Microsoft公司的强大云服务产品,以及Python数据科学生态系统的成熟技术,所介绍的工作流程和案例涉及从部署到生产各个环节,通过使用当代机器学习、人工智能和云计算工具逐步构建多种云端机器学习应用程序(覆盖体育、项目管理、产品定价、房地产等领域中的实际问题),帮助你构建可扩展并能交付于生产的解决方案。
基本控制结构python跳转结构_一文看懂Python的控制结构:for、while、if…都有了...相关推荐
- angular 字符串转换成数字_一文看懂Python列表、元组和字符串操作
好文推荐,转自CSDN,原作星辰StarDust,感觉写的比自己清晰-大江狗荐语. 序列 序列是具有索引和切片能力的集合. 列表.元组和字符串具有通过索引访问某个具体的值,或通过切片返回一段切片的能力 ...
- python 推迟运行_一文看懂Python的time模块sleep()方法和strftime()方法
概述 今天主要介绍一下Python的time sleep()方法和strftime()方法. 一.Python time sleep()方法 Python time sleep() 函数推迟调用线程的 ...
- python中的映射_一文读懂Python中的映射
python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删除成员. ...
- python面向对象编程指南 豆瓣_一文看懂Python面向对象编程(Python学习与新手入门必看)-绝对原创...
尽管网上有许多关于Python面向对像的编程介绍,小编我看完后总觉得不是很满意,也不过瘾,所以决定自己亲自动手写篇文章,帮你理解Python面向对象的编程的基本概念和核心思想.本文内含很多实例代码,以 ...
- python写股票指标_一文看懂KDJ指标及Python实现
KDJ指标又叫随机指标,是一种非常实用的技术分析指标,被广泛用于股市的中短期趋势分析,是期货和股票市场上最常用的技术分析工具. 随机指标KDJ是根据统计学原理,在一个特定的周期(常为9日.9周等),以 ...
- 一文看懂Python collections模块的高效数据类型
原作: George Seif, 发表于medium.com, 大江狗原创翻译, 并对原文稍作修改. Python的最大优势之一是其广泛的模块和软件包.这将Python的功能扩展到许多受欢迎的领域,包 ...
- 一文看懂Python 爬虫 进阶(三)
一文看懂Python 爬虫 进阶(三) 文章目录 一文看懂Python 爬虫 进阶(三) **猫眼电影(xpath)** **链家二手房案例(xpath)** **百度贴吧图片抓取** 这篇几乎都是代 ...
- python语言语句快的标记是什么_一文搞懂Python程序语句
原标题:一文搞懂Python程序语句 程序流 Python 程序中常用的基本数据类型,包括: 内置的数值数据类型 Tuple 容器类型 String 容器类型 List 容器类型 自然的顺序是从页面或 ...
- python输入什么就输出什么_一文读懂Python的输入和输出
本文介绍了Python的输入和输出,既然是Python代码,那么就一定有输出量,那么,Python是如何输出的呢? 输出 用print()在括号中加上字符串,就可以向屏幕上输出指定的文字.比如输出'h ...
最新文章
- java中volatile_Java中Volatile关键字详解
- java定时器返回future_java 定时器线程池(ScheduledThreadPoolExecutor)的实现
- kuka机器人if逻辑编程_KUKA机器人调试的程序语法是什么
- 【效率】推荐几个不错的网站!
- 关于IOCP乱序的探讨
- golang mysql断线_MySQL的连接池、异步、断线重连-Go语言中文社区
- ElasticSearch bool过滤查询
- git拉取请求_向需要的开源项目提供拉取请求的礼物
- clock_gettime参数中不同clock ID含义的差别
- how to use automake to build files
- Excel图表之道一突破常规
- 几个支持SCORM的免费平台
- 如何使用excel快速下载网页图片?
- ai老师人工智能培训老师计算机视觉老师叶梓:计算机视觉领域的自监督学习模型——MAE-12
- 全球及中国冻干菠萝行业市场运行模式及未来发展前景分析报告2022-2028年
- 买到山寨版康师傅绿茶的后果
- python延迟几秒_python 中止几秒执行下一步、
- LSM tree(日志结构合并树)_笔记
- Go 文件操作(创建、打开、读、写)
- bootstrap手机网站H5模板固定底部顶部导航DEMO下载