在上一节,我们学习了如何创建简单的列表,并学习了如何操作列表元素。在这一节,我们将学习如何遍历整个列表,通过for循环,高效处理任意长度的列表。
我们常常需要遍历列表中的所有元素,对每个元素执行相同的操作,一个一个操作未免太过麻烦,这个时候我们就可以使用for循环,python中的for循环与C语言中的类似,但表达更为简单,例如:
Words=['a','b','c','d']
for Word in Words:
print(Word)
这样就可以得到:
a
b
c
d
操作极为简洁。
在python中通常以缩进来定义代码块,这一点与C语言不同,这导致缩进在python中有着极为重要的作用。python中每级缩进通常采取4个空格。
在for循环结束后,我们总是想提供一些总结性输出或继续执行其他任务,在for循环后面,没有缩进的代码只会执行一次,不会重复执行:
Words=['a','b','c','d']
for Word in Words:
print(Word)
print("That's all!")
得到:
a
b
c
d
That's all!
python函数range()函数能够帮助我们很轻松地生成一系列的数:
for num in range(1,5)
print(num)
这里看似会生成1到5,实则不然:
1
2
3
4
这是因为range()函数的执行逻辑是让python从指定的第一个数开始计数,并在到第二个值的时候停止,因此不包含第二个数。
在调用range()函数时,也可只定义一个参数,那么range()函数将从0开始,数到那个指定的参数为止,例如range(6)将返回0到5.
要创建数值列表,可以用list()函数将range()函数的结果直接转换为列表:
num=list(range(1,5))
print(num)
这样就会输出一个数值列表:
[1,2,3,4]
在使用range()函数时,还可以指定步长。为此,我们可以给range()函数指定三个参数,python将根据这个步长来生成数。
例如,打印1到10之间的奇数:
num=list(range(1,11,2))
print(num)
结果是:
[1,3,5,7,9]
使用range()函数几乎能创建任意有序数值的集合。例如在python中,用**表示乘方,我们可以使用range()函数让前十个正整数的平方加入一个列表:
num=[]
for value in range(1,11):
num.append(value**2)
print(num)
得到:
[1,4,9,16,25,36,49,64,81,100]
有几个python函数能够帮助我们求数值列表的最大最小值以及总和:
num=[1,4,9,16,25,36,49,64,81,100]
print(min(num))
print(max(num))
print(sum(num))
得到:
1
100
385
在python中,我们不仅可以处理列表的单个元素,还可以处理列表的部分元素,这在python中被称为切片(slice)。
要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与range()函数一样,python 在到达指定的第二个索引之前的元素时停止。要输出列表中的前三个元素,需要指定索引0和3,这将返回索引分别为0到2的元素:
num=[1,4,9,16,25,36,49,64,81,100]
print(num[0:3])
可以没有第一个参数,python将从第一个列表元素开始,到指定参数时结束:
num=[1,4,9,16,25,36,49,64,81,100]
print(num[:3])
也可以没有第二个参数,python将返回第一个参数到最后一个列表元素。
遍历切片与遍历列表的形式相同,例如:
num=[1,4,9,16,25,36,49,64,81,100]
for n in num[0:3]:
print(n)
通常我们需要根据既有列表创建全新的列表。要复制列表,可以创建一个包含整个列表的切片,方法时同时省略起始索引和终止索引([:]):
num=[1,4,9,16,25,36,49,64,81,100]
newnum=num[:]
有的朋友可能会想使用以下的方法:
num=[1,4,9,16,25,36,49,64,81,100]
newnum=num
但是这样如果更改了原列表,新列表会跟着一起改变,这样做新旧列表是相关联的,两个变量指向了一个列表。
列表是变化的,可以修改的,如果我们要创建一系列不可修改的元素,我们可以使用元组(tuple)。
元组与列表看起来很像,但元组使用()而不是[]标识。定义元组后,就可以像访问列表一样用索引访问元组:
num=(1,4,9,16,25,36,49,64,81,100)
print(num[0])
但是注意,严格来讲,元组是由","标识。如果我们要定义一个只含有一个元素的元组,一定要带上逗号:
num=(1,)
遍历元组的语法与遍历列表的语法相同,用for循环。
虽然不能修改元组的元素,但可以给表示元组的变量赋值,这需要重新定义整个元组:
num=(1,4,9,16,25,36,49,64,81,100)
print(num)
num=(1100,)
print(num)
相比于列表,元组是更简单的数据结构。如果需要存储一组在程序的整个生命周期内都不变的值,就可以使用元组。
在本节中,我们首先学习了如何高效地处理列表中的元素,如何使用for循环遍历列表,python如何根据缩进来确定程序的结构,以及如何避免一些常见的缩进错误。然后学习了如何创建简单的数值列表,以及可对数值列表执行的一些操作。接着学习了如何通过切片来使用列表的一部分以及复制列表。最后,你还学习了元组(它对不应变化的值提供了一定程度的保护)。
ps:这是我的第三篇博客,有很多做的不足的地方,希望大家多多指正。希望大家多多评论!