前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python基础教程 读书笔记(2)第二章 列表和元组

Python基础教程 读书笔记(2)第二章 列表和元组

作者头像
统计学家
发布2019-04-10 16:50:37
4540
发布2019-04-10 16:50:37
举报

2.1序列概览

列表和元组的主要区别在于,列表可以修改,元组则不能。也就是说如果要根据要求来添加元素,那么列表可能会更好用;而出于某些原因,序列不能修改的时候,使用元组则更为合适。使用后者的理由通常是技术性的,它与Python内部的运作方式有关。这也是内建函数可能返回元组的原因。一般来说,在几乎所有的情况下列表都可以替代元组。

编写一个列表:

>>> edward=['Edward Gumby',42]

构建如下的一个人员信息的列表也是可以的,这个列表就是你的数据库:

>>> john=['John Simith',50]

>>> database=[edward,john]

>>> database

[['Edward Gumby', 42], ['John Simith', 50]]

2.2通用序列操作

所有序列类型都可以进行某些特定的操作。这些操作包括:索引(indexing)、分片(sliceing) ,加(adding )、乘(multiplying)以及检查某个元素是否属于序列的成员(成员资格)。除此之外,Python还有计算序列长度、找出最大元素和最小元素的内建函数。

2.2.1索引

序列中的所有元素都是有编号的—从0开始递增。这些元素可以通过编号分别访问:

>>> greeting='Hello'

>>> greeting[0]

'H'

字符串字面值(就此而言,其他序列字面量亦可)能够直接使用索引,而不需要一个变量引用他们。

>>> 'Hello'[1]

'e'

如果一个函数调用返回一个序列,那么可以直接对返回结果进行索引操作。

>>> fourth=raw_input('Year:')[3]

Year: 2025

>>> fourth

'5'

实例:

#根据给定的年月日以数字形式打印出日期

>>> months=[

'January',

'February',

"March",

'April',

'May',

'June',

'July',

'Augest',

'September',

'October',

'November',

'December'

]

#以1一31的数字作为结尾的列表

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)

#要将月份和天数减1,以获得正确的索引

month_name=months[month_number-1]

ordinal=day+endings[day_number-1]

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

Year: 2015

Month(1-12:>? 5

Day(1-31):>? 13

May13th2015

2.2.2分片

与使用索引来访问单个元素类似,可以使用分片操作来访问一定范围内的元素。

>>> tag='https://d396qusza40orc.cloudfront.net/statistics'

>>> tag[23:37]

'cloudfront.net'

分片操作对于提取序列的一部分是很有用的。而编号在这里显得尤为重要。第1个索引是需要提取部分的第1个元素的编号,而最后的索引则是分片之后剩下部分的第1个元素的编号:

>>> numbers=[1,2,3,4,5,6,7,8,9]

>>> numbers[3:6]

[4, 5, 6]

简而言之,分片操作的实现需要提供两个索引作为边界,第1个索引的元素是包含在分片内的,而第2个则不包含在分片内。

1.优雅的捷径

假设需要访问最后3个元素(根据先前的例子),那么当然可以进行显式的操作:

如果分片所得部分包括序列结尾的元素,那么,只需置空最后一个索引即可:

>>> numbers[-3:]

[7, 8, 9]

这种方法同样适用于序列开始的元素:

>>>numbers[:3]

[1,2,3]

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与统计学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档