Python基础教程(第2版)学习笔记_005:对列表进行索引和分片操作
时间:2011-03-17 来源:谢晖
1、#此程序用来演示如何通过列表进行索引操作
months=[
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
]
endings=['st','nd','rd']+17*['th']\ #建立17个'th'
+['st','nd','rd']+7*['th']\ #建立7个'th'
+['st']
print endings
year=raw_input('Year: ')
month=raw_input('Month(1-12): ')
day=raw_input('Day(1-31): ')
month_number=int(month) #对输入的月份取整
day_number=int(day) #对输入的日期取整
month_name=months[month_number-1] #由于序列(列表)是从0开始依次编号,故需减去1
ordinal=day+endings[day_number-1] #同上的解释
print month_name+' '+ordinal+'.'+year
raw_input()
2、与使用索引来访问单个元素类似,可以使用分片操作来访问一定范围内的元素。分片通过用冒号相隔的两个索引来实现.
分片操作对于提取序列的一部分非常有用,而编号在这里显得万为重要:第1个索引是需要提取部分的第1个元素的编号(注意:编号是从0开始起的),而最后索引则是分片之后剩下部分的第1个元素的编号。也就是说分片操作的实现需要提供两个索引作为边界,第1个索引的元素是包含在分片内的,而第2个则不包含在分片内。
注意下列源代码的含义:
3、分片的步长操作
分析上面的程序可以发现:在序列中可以自定义步长,类似VBA中的循环操作中的步长计数功能。注意最后一行命令打印出来的结果,实现了倒序输出!!并且可以实现序列的连接功能,但是连接是有条件的:要求类型相同。
4、序列的乘法:
用数字x乘以一个序列会生成新的序列,而在新的序列中,原来的序列将被重复x次。
还记得序列是什么吗?一切皆序列!!
5、None 空列表和初始化
空列表可以简单地通过两个中括号进行表示([])——里面什么都没有。但是,如果想创建一个占用10个元素的空间,却不包括任何有用内容的列表,又该如何做到呢?可以像前面那样使用[42]*10,或用使用[0]*10,这样看起来可能更实际一些:生成一个包括10个0的列表。然而,有些时候我们却会需要一个值来代表空值——这样就意味着没有在里面放置任何元素。
这时就需要使用None。None是一个Python的内建值,它的确切含义是“这里什么也没有”。因此,如果想初始化一个长度为10的列表,可以这样来实现:
注意①出现错误的语句,None必须大写字母开头才可以!!②计算列表(所有序列均可以吗?)长度可以用len函数来实现。