Python笔记(3)——列表二:操作列表(Python编程:从入门到实践)
一、遍历列表
1. 遍历整个列表:使用 for 循环
1 colors=[ ' red ' , ' yellow ' , ' blue ' , ' green ' ] # 定义列表 2 for color in colors: # 使用循环:从列表中提取一个元素并将其存在变量i中 3 print (color) # 打印变量i的值
以上代码运行的结果是:
2. for 循环中的缩进与结束后操作
1 colors=[ ' red ' , ' yellow ' , ' blue ' , ' green ' ] 2 for color in colors: 3 print (color.title()+ " 是我最喜欢的颜色。 " ) 4 print ( " 但 " +color.upper()+ " 是他最讨厌的颜色。\n " ) 5 print ( " 这条语句不在循环内,只在循环结束后执行一次 " )
以上代码运行的结果是:
二、创建数值列表
1. 函数 range() 介绍
可用 Python 函数 range() 让成一系列的数字。函数 range() 让 Python 指定的第一个值开始数,并在到达指定的第二个值后停止,输出 不包含第二个值 。
1 for value_1 in range(2,7): # 使用循环遍历range(2,7)的整数 2 print (value_1)
以上代码运行的结果是:
2.创建数值列表
要创建数字列表,可使用函数 list() 将 range() 的结果直接转换为列表。 如果将 range() 作为 list() 的参数,输出将为一个数字列表 。 使用函数 range() 时,还可指定步长。 【range(a,b,c)】a为开始元素,b为结束元素(不包含b),c为步长。
列表解析:将 for 循环和创建新元素的代码合并成一行,并自动附加新元素。 用法:首先指定一个描述性的 列表名 ,如 Sa; 然后指定一个 左方括号 ,并定义一个 表达式 ,用于生成你要存储到列表中的值。在下面 20-24行 代码中,表达式为 a**2 ,它计算平方值。接下来,编写一个 for 循环 ,用于给表达式提供值,再加上 右方括号 。在下面示例中,for循环为for value in range(1,11),它将值1~10提供给表达式value**2。请注意,这里的for语句末尾没有冒号。
1 print ( ' 创建数字列表 ' ) 2 num=list(range(10,15)) # 创建num列表,将range()的结果直接转换为列表。此处range()作为列表的参数,运行后输出一个数字列表 3 print (num) 4 5 print ( ' \n指定range()的步长 ' ) 6 num1=list(range(10,15,2)) # 从10开始,到15(不包括15),步长为2 7 print (num1) 8 9 print ( " \n练习:创建一个包含前十个整数的平方列表 " ) 10 As=[] # 新建空列表 11 for a in range(1,11): # 使用range()函数创建数字1~10,并将其保存在变量a中 12 A=a**2 # 计算当前循环值得平方 13 As.append(A) # 使用append()方法将当前平方值添加到列表中 14 print (As) # 循环结束后,打印列表。 15 16 print ( " \n练习的简介代码 " ) 17 S= [] 18 for i in range(1,11 ): 19 S.append(i**2 ) 20 print (S) 21 22 print ( " \n列表解析例子:将练习代码合成一行 " ) 23 Sa=[a**2 for a in range(1,11 )] 24 print (Sa)
以上代码运行的结果是:
3.数字列表简单统计计算
min()函数:返回数字列表最小值
max()函数:返回数字列表最大值
sum()函数:对数字列表元素求和
1 D=[10,20,30,40,50,60,70,80,90 ,0] 2 print (min(D)) 3 print (max(D)) 4 print (sum(D))
以上代码运行的结果是:
三、使用列表的一部分
1. 切片
注意:
①列表切片使用符号是 冒号“:” 。 range() 函数使用的是逗号“,”。列表用逗号“,”分隔。
②未指定起始索引,默认从原列表第一个位置,即索引0开始提取元素。
③未指定终止索引,默认提取到列最后一个元素。
④列表中的步长理解:假设原列表为 Q=[-20,-10,10,20,30,40,50,60,70,80,90,100,0] 切片为 Q[3:10:3] ,则切片从 3 号索引的 20 开始,到 9 号索引位的 80 ,间隔3提取元素组成列表。提取的子集为 [50,80] 。 特别注意,间隔 3 可理解为从起始索引位开始,向后开始数 1~3 ,要提取每次数到 3 时该索引位置的元素。
1 alist=[3, ' @ ' , ' pen ' , ' book ' ,6, ' W ' , ' top ' ] 2 print (alist) # 打印原列表 3 print ( " 列表的切片返回的是列表,可理解为获取原列表的子集 " ) 4 print (alist[:]) # 同样是打印原列表。列表切片使用的符号是冒号【:】,注意range()函数使用的是逗号【,】。列表用逗号【,】分隔 5 print (alist[:3]) # 未指定开始索引,从头开始到索引3(不包括索引3位置元素) 6 print (alist[3:]) # 未指定终止元素,切片未从索引3位置到列表最后 7 print (alist[0:2]) # 提取第1-2个元素 8 print (alist[1:5:2]) # 以2未步长,提取从第2个开始到第5个元素,即索引4位置元素。注意步长 9 print (alist[1::2]) # 以2为步长,提取从第2个开始到列表最后的元素 10 print (alist[-3:]) # 提取倒数第三位至最后的元素 11 print (alist[2:-2]) # 提取从第三位到倒数第二位之间的元素
以上代码运行的结果是:
2. 遍历切片
要遍历列表的部分元素,可在 for 循环中使用切片。下面的例子将遍历前三个元素并将其打印出来。
1 print ( " 代码1: " ) 2 alist=[3, ' @ ' , ' pen ' , ' book ' ,6, ' W ' , ' top ' ] 3 AA=alist[0:3 ] 4 for a in AA: 5 print (a) 6 7 print ( " \n代码2: " ) 8 alist_1=[3, ' @ ' , ' pen ' , ' book ' ,6, ' W ' , ' top ' ] 9 for a in alist_1[:3 ]: 10 print (a)
以上代码运行结果是:
使用列表解析不能得到上面要求的结果:
1 print ( " \n'代码3:列表解析'不能得到提取前三个元素并将其打印的结果,因为列表解析得到的是列表 " ) 2 alist_2=[3, ' @ ' , ' pen ' , ' book ' ,6, ' W ' , ' top ' ] 3 a=[i for i in alist_2[:3 ]] 4 print (a)
以上代码运行的结果是: