参考来源:Vitu.AI简单回顾一下,上节课我们初步了解了列表(list)和元组(tuple),这两个批量存储值的东西。在本课中,我们将学习循环,这是一种重复执行某些代码的方法。我们将了解两种不同类型的循环,for和while,以及如何有效地使用列表理解,这是Python的一个高级属性。for循环首先,让我们看一个例子,还是熟悉的行星列表:planets=['Mercury','Venus','Earth','Mars','Jupiter','Saturn','Uranus','Neptune']forplanetinplanets:print(planet,end='')#在同一行显示所有行星的名字,用空格隔开从上面的例子总结起来,for循环需要指定两个元素:第一个element是要使用的变量的名称(在上面的代码中,具体是变量planet)第二个元素是要循环的范围(在上面的代码中,具体是列表planets[])在上一课中,我们谈到in,用于判断一个值是否在列表中。在for循环中,in是我们用来连接上面两个元素的关键字。in左边的对象是第一个元素,in右边的对象是第二个元素,可以是任何支持循环的对象。基本上,它可以被认为是一组事物,我们可以对其进行循环。除了列表,我们还可以循环元组。下面的代码相当于帮我们计算“2的6次方”:multiplicands=(2,2,2,2,2,2)product=1formultinmultiplicands:product=product*multproduct同样,我们也可以循环通过字符串中的每个字母。没错,上面的循环会显示HelloWorld,这是所有程序员都知道的进入写代码世界的初始密码。range()是我们经常在循环中使用的函数。事实证明,它对于编写循环也非常有用。例如,如果我们想将一些动作重复3次:foriinrange(3):print("重要的事情应该重复三次。i=",i)whileloopPython中还有一个循环叫做while循环.与for的整体循环不同,while循环只有在满足某些条件后才会触发。我们看一个例子:i=0whilei<10:print(i,end='')i+=1while循环中的参数是布尔值(booleans)的判断,当这个循环的前置条件判断为假时,循环停止。和上面的代码一样,当变量i等于10时,循环停止。列表推导式列表推导式/推导式/生成器是Python最受欢迎和最独特的功能之一,该功能很好地利用了for循环。我们来看一个例子:squares=[n**2forninrange(10)]squares上面的代码简洁明了地列出了0-9这十个数的平方。我们如何在不使用此功能的情况下在python中执行此操作?squares=[]forninrange(10):squares.append(n**2)squares是的,如上面的代码所示,我们要先创建一个空列表,并在for循环中使用每个值withlist.append()添加到最初创建的列表中。我们还可以在列表推导中加入if条件判断。以我们熟悉的行星列表为例:#我们需要名字小于6个字母的行星short_planets=[planetforplanetinplanetsiflen(planet)<6]short_planets然后看if条件判断关联,并且对列表中的元素做一些格式转换的例子:loud_short_planets=[planet.upper()+'!'forplanetinplanetsiflen(planet)<6]上面的例子loud_short_planets看起来有点复杂吗?没错,因为正常人是逐行阅读代码的。让我们逐行查看上面的示例:[planet.upper()+'!'forplanetinplanetsiflen(planet)<6]这样,我们要做的三个操作就一目了然了,让我们按照人类可读的逻辑友好的顺序来解释:for循环的范围是列表planetsif,判断条件是列表中小于6个字母的元素将每个满足条件的元素大写,并在单词末尾添加感叹号,类似的,细心的你可能会注意到上面的代码没有分配一个列表来存储循环的输出。当然,这种做法并不是特别普遍。让我们看一个类似操作的另一个有趣的例子:[32forplanetinplanets]是的,没错,在上面的代码中,列表推导用于提供值32的出现次数。更有趣的是,列表推导结合min()、max()和sum()等函数,我们可以将需要多行代码的问题变成令人印象深刻的单行解决方案。我们来看看python中同一个问题的三种不同解法:待解的问题是:一组列表中有多少个负数?#选项1:不使用列表理解defcount_negatives(nums):"""返回给定列表中负数的数量。>>>count_negatives([5,-1,-2,0,3])2"""n_negative=0fornuminnums:ifnum<0:n_negative=n_negative+1returnn_negative#选项2:使用解析列表defcount_negatives(nums):returnlen([numfornuminnumsifnum<0])#方案三:使用解析列表,使用`sum()`defcount_negatives(nums):returnsum([num<0fornuminnums])是不是看起来有点复杂,没关系,我们只要以表明python作为编程语言易于阅读、简洁且用途广泛。我们将逐渐熟悉这门美妙的编程语言。原文地址:初识Python【今天开始写代码】第5课
