摘要:作者心叶时间此处长期维护一些对帮助快速使用的一些基础语法,方便日常算法练习使用。控制语法语句可以跳出和的循环体。迭代器有两个基本的方法和,这点也很类似字符串,列表或元组对象都可用方法创建迭代器对象。并在下一次执行方法时从当前位置继续运行。
作者:心叶
时间:2018-04-23 22:18
此处长期维护一些对帮助快速使用python3的一些基础语法,方便日常算法练习使用。
控制语法break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
if条件控制if 表达式: 语句 if 表达式: 语句 elif 表达式: 语句 else: 语句while循环
Python中没有do..while循环
while 判断条件: 语句 else: 语句for语句
forrange()函数in : else:
这个函数不得不提,为什么滴?因为在实际用python练习算法题目时,这个函数真的用的太频繁了。
print(list(range(5,9))) #[5, 6, 7, 8] for i in range(5):print(i,end=" ") #0 1 2 3 4 for i in range(1,3):print(i,end=" ") #1 2 for i in range(0, 10, 3):print(i,end=" ") #0 3 6 9 for i in range(-10, -100, -30):print(i,end=" ") #-10 -40 -70迭代器与生成器 迭代器
迭代器是什么东西?哈哈,有没有想起java中集合的方法iterator()返回迭代器?是的,就是类似这个的存在。
迭代器有两个基本的方法:iter() 和 next(),这点也很类似java(字符串,列表或元组对象都可用iter()方法创建迭代器对象)。
下面先简单演示一下这二个方法的用法:
list=["中国","美国","俄罗斯","埃塞俄比亚"] #1.使用iter()方法获取迭代器对象 it = iter(list) #2.使用next()方法依次获取数据 print (next(it)) #打印结果是"中国" print (next(it)) #打印结果是"美国"
上面的例子应该已经明白这二个方法的用法了,使用iter()方法获取迭代器对象,再用next(it)方法依次获取集合的数据。
当然,到末尾了已经没有可以取的数据的时候,再次调用会抛出异常,因此我们可以借助这个来实现迭代全部的数据,如下:
list=["中国","美国","俄罗斯","埃塞俄比亚"] it = iter(list) flag=True; while flag: try: print (next(it)) except StopIteration: print ("迭代结束了",end=" ") flag=False
除此之外,使用for可以实现类似的效果,如下:
list=["中国","美国","俄罗斯","埃塞俄比亚"] it = iter(list) for x in it: print (x, end=" ") #"中国","美国","俄罗斯","埃塞俄比亚"
因此,迭代全部的数据肯定不是迭代器存在的全部意义,更多的时候,你可以把它看成一个管理一列数据的对象,需要的时候告诉他一下,他就会给你下一个数据,不像for循环那样一下子迭代结束,你可以在任何需要的时候获取下一个数据。
记住这一个特点,特别是在设计算法或者模式的时候,会很有用的(当然,具体用好他从来都是经验的事情,祝你好运)。
生成器TS或者ES6+有所了解的人应该都知道yield函数,基本上和这里的差不多用法。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回yield的值。并在下一次执行 next()方法时从当前位置继续运行。
上面的说法可能有点不好理解,ok,下面用大白话说一下:
生成器就是一个可以自定义一个生成迭代器对象函数的概念,生成的迭代器对象每次被询问返回下一个数据的时候,自定义的如果返回,使用的就是yield函数,先看下下面的例子:
#定义一下可以生成迭代器对象的函数,类似上面例子中的iter()方法 def generatorDemo(array): index=0 while(index因此,你可以从二个角度来理解生成器:
1.一个和迭代器配合使用的迭代器对象生成方法;
2.更本质的理解:yield类似return,可以返回数据,不过不同的是,可以多次返回数据,调用一下返回一下,再次调用返回下一个yield定义返回数据的地方,就如同上面的例子,直到yield语句全部完毕再次调用会抛出错误。
如果你问我什么时候使用他,这具体看业务需求,就好比if语句一样,他就在那里,需要用的时候可以记起来他,就够了。
函数具体就不用多说明了,直接给出定义,然后说几个重要的问题。
def 函数名(参数列表): 函数体参数传递在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
函数中传递参数的时候,不可更改的对象和可以修改的对象在操作影响上是有很大区别的,用一句话说明的话就是:不可更改的对象类似传递的是值,可以修改的对象传递的是"指针",也就是引用传递,应该可以感受出来区别了吧。
python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。
参数参数有四点,具体的很多和ES很像,不过在第一点上和ES区别很大,下面来简单说明一下:
1.必需参数:就是你定义函数的时候,定义了几个参数,调用的时候就要传递几个,当然是普通定义方法,不包括下面的不定长参数,这点ES就很随意了;
2.关键字参数:举个例子,比如你定义了一个函数有二个参数age和name,函数名称是getInfo,正常调用是依次传递参数:getInfo(7,"yelloxing"),当然你可以不这样,你还可以这样:
getInfo(name="yelloxing",age=7);3.默认参数:这个就和ES6差不多意思,举例,定义函数时(没有写全,值写函数头部):
getInfo(age,name="默认名称");4.不定长参数:定义方法:getInfo(age,name,*vartuple),这样多传递的数据就全部在vartuple中,调用前它是一个空元组。
别的更多细节说明就到此为止,如果后续有必要再添加或多带带整理,此时的已经够用了。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/41570.html
摘要:布尔值布尔值和布尔代数的表示完全一致,一个布尔值只有两种值的数据类型可以通过内置的函数查询,例如还可以用来判断和的区别在于不会认为子类是一种父类类型。会认为子类是一种父类类型。基本功能是进行成员关系测试和删除重复元素。 ...
摘要:该系列文章入门,编程基础概念介绍变量,条件,函数,循环中的数据类型,,,,在中创建对象学一门编程语言正在变得越来越容易,只要念过高中甚至是初中小学,能熟练聊和懂得一点点软件的人,入门一门编程语言都不在话下。 该系列文章: 《python入门,编程基础概念介绍(变量,条件,函数,循环)》 《python中的数据类型(list,tuple,dict,set,None)》 《在python...
摘要:年月宣布支持时间延长到年。更详细的发布列表参阅官网的版本号分为三段,形如。其中表示大版本号,一般当整体重写,或出现不向后兼容的改变时,增加表示功能更新,出现新功能时增加表示小的改动如修复了某个,只要有修改就增加。年公司正式发布。 < 返回索引页 Python语言简介 Python介绍及发展 介绍 Python 官方网站:https://www.python.org/, 大家可以到此处下...
摘要:勤学学习效率与效果取决于执行力。这一步学习的正确姿势是在实践操作中发掘问题,然后带着问题找答案。拆分任务将目标分解成具体可执行的学习任务。勤学强大的执行力是学习的根本保障。分享复述检验学习成果,提高学习效果的最好方法。 showImg(https://segmentfault.com/img/bVbcPGZ?w=256&h=256); 前段时间和大家一起分享了一篇关于学习方法内容《大牛...
摘要:课程简介简明易懂的课程,不仅适用于那些有其它语言基础的同学,对没有编程经验的同学也非常友好。建议遵守以下约定使用个空格来缩进永远不要混用空格和制表符在函数之间空一行在类之间空两行字典,列表,元组以及参数列表中,在后添加一个空格。 showImg(https://segmentfault.com/img/bVCldE); 课程简介:简明易懂的 Python3 课程,不仅适用于那些有其它语...
阅读 549·2021-11-25 09:44
阅读 2635·2021-11-24 09:39
阅读 2304·2021-11-22 15:29
阅读 3519·2021-11-15 11:37
阅读 3379·2021-09-24 10:36
阅读 2507·2021-09-04 16:41
阅读 991·2021-09-03 10:28
阅读 1831·2019-08-30 15:55