遍历列表
如果我们想要将列表中的所有元素一一打印出来,就需要用到循环这个结构,具体代码如下:
首先,我们将names变量指向一个列表。
接下来的for...in...结构表示对于···在···中。for后面跟着一个临时变量,表示循环内容中的每一个元素,in后面就是跟的循环的内容。最后别忘了还有一个冒号:
然后下一行需要缩进,一般是留出4个空格。表示这一行的语句在循环体中,会被不断执行,直到所有的循环都完成。
结果如下:
当然,如果我们想要在循环完成后再添加一些操作,那么就不必再缩进:
关键看第3行,我们将每一个循环的元素都运用了title()方法,同时还加了一个换行符\n。
第5行表示,在所有循环完成后才会执行这条语句。
结果如下:
这里特别要注意的是,在for循环之后,如果缩进则表示在循环体内重复执行,如果不缩进则表示所有循环完成后再执行。如果错误地缩进则会造成严重的后果,比如下面这个例子:
如上所示,我们本意是将第5行的代码放在循环体中,希望同时打印这条内容。但是却没有缩进,就会导致循环完成后才能执行,结果如下:
可以看到,由于在所有循环完成之后,临时变量的最后一个元素是John,因此最后打印的就是John。
数值循环
如果你想得到一定范围内的数字,可以使用range函数。range(,3)表示从0开始,到3结束。需要注意的是,这个范围是含左不含右。对于range(,3)来说,就是包含0,而不包含3。输出的结果如下:
如果想将上面的内容变成列表,则可使用list函数:
结果如下:
另外,range函数中还可以加入步长,也就是隔几个数输出一次。比如下面这个例子:
在第1行,我们想在0-10中每隔2个数输出一次,因此使用range(,10,2)即可。
输出如下:
注意到,上述列表没有10,因为含左不含右。
更进一步
如果你想得到1-10的立方,那么就需要range函数和for循环的结合了:
如上所示,我们先建立一个空列表cubes,通过for循环不断往里填入内容。
因为我们想得到1-10的立方,因此range函数的取值为range(1,11)。
在循环体中,我们先将cube这个临时变量指向元素的立方value**3,然后我们使用append方法将其添加到空列表cubes中。
来看下最后的结果:
上述代码有些臃肿,我们可以去掉临时变量cube,直接在append方法中填入value**3,如下:
当然,上面的代码还不是最简洁的,我们还有一个终极大招:只用一行代码完成上述所有功能,这就是列表解析式。
第1行代码就是列表解析式,可以看到,首先要用中括号将其括起来;然后左边是变量,也就是你想得到的内容;右边就是一个for循环。可以说,这个方法非常的简洁高效,结果和之前一样:
最后,你也可以对列表使用诸如min、max、sum等聚合函数,示例如下:
今日份的快乐就到这里了,明天不见不散!