首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

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函数来实现。

菊子曰 本文用菊子曰发布