python学习02:第二章、列表和元组(1)

在python中最基本的数据结构是序列sequence。序列中的每个元素被分配一个序号---即元素的位置,也成为索引。
1、Python包含6种内建的序列,最简单的就是列表和元组。其他的内建序列有字符串、Unicode字符串、buffer对象和xranger对象。
>>> ellen = ["Demons Ellen",28]
>>> james = ["John James",23]
>>> database = [ellen,james]
>>> database
[['Demons Ellen', 28], ['John James', 23]]

2、通用的序列操作:索引indexing、分片slicing、加adding、乘multiplying以及检查某个元素是否属于序列的成员。
3、索引
Python如果索引的位置是整数,那么就像我们学习的其他语言一样是从左边开始读取,并且第一个位置是0而不是1,这点我们都是比较熟悉的,我们就不详细表述了,但是重点来了,Python的索引是可以为负数的。当索引是负数时,表示Python从右边开始,并且右边的第一个元素的索引是-1而不是0或者-0。
>>> greeting = "hello"
>>> greeting[2]
'l'
>>> greeting[-1]
'o'
>>> greeting[-2]
'l'

索引示例:
months = ['January',
          'February',
          'March',
          'April',
          'May',
          'June',
          'July',
          'August',
          'September',
          'October',
          'November',
          'December']

endings = ['st','nd','rd'] + 17 * ['th']\
    + ['st','nd','rd'] + 7 * ['th']\
    + ['st']

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]
ordinal = day + endings[day_number-1]

print month_name + ' ' + ordinal + ', ' + year



执行结果:
Year:1987
Month(1-12):2
Day(1-31):25
February 25th, 1987

4、分片(有点难度)
分片处理的是一定范围内的元素。分片处理的是两个索引之间的元素,包含第一个索引,但是第二个索引不包含在分片内,其实也就相当于是左闭右开区间。需要注意的是分区其实是一个新的区间范围。
>>> numbers = [1,2,3,4,5,6,7,8,9,10]
>>> numbers[7:10]
[8, 9, 10]
需要注意的是索引10其实是10之后的元素,但是是不存在的,访问[7:10],包含索引7但是不包含索引10,由于索引是从0开始的,其实索引7的元素是8,索引10的元素不存在,索引分片得出的是[8, 9, 10]
需要注意的是:如果分片中最左边的索引是比它最右边的索引晚出现在序列中,那么结果是一个空的序列。
>>> numbers[-3:0]
[]
如果序列想得到的分片包含结尾的元素,那么我们只需要把后面的索引设置成空索引即可
>>> numbers[-3:]
[8, 9, 10]
同样这种方法也可以用于包含初始位置的元素的情况
>>> numbers[:3]
[1, 2, 3]
如果需要复制整个序列,前后索引都为空即可
>>> numbers[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
等价于numbers

分片示例:
url = raw_input('Please enter the URL:')
domain = url[11:-4]

print "Domain name:  " + domain

执行结果:
Please enter the URL:http://www.python.org
Domain name: python

5、更大的步长
进行分片的时候,分片的开始和结束点需要进行指定。而另一个参数---步长step length通常都是隐式设置的。在普通的分片中如果没有这个参数默认的步长是1。
>>> numbers[0:10:1]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
同样,步长也可以为负数,那么分片从右到左提取元素:
>>> numbers[0:10:2]
[1, 3, 5, 7, 9]
>>> numbers[3:6:3]
[4]
>>> numbers[::4]
[1, 5, 9]
>>> numbers[8:3:-1]
[9, 8, 7, 6, 5]
>>> numbers[10:0:-2]
[10, 8, 6, 4, 2]
>>> numbers[0:10:-2]
[]
>>> numbers[::-2]
[10, 8, 6, 4, 2]
>>> numbers[5::-2]
[6, 4, 2]
>>> numbers[:5:-2]
[10, 8]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值