Python-列表和元祖
2015-09-10 22:05
525 查看
Python-列表和元祖
首先,大家如果看到有什么不懂的地方,欢迎吐槽!!!我会在当天或者第二天及时回复,并且改进~~
在Python中,最基本的数据结构是序列,
序列包含:
列表
元祖
其他的内建序列类型有:
字符串
Unicode字符串
buffer对象
xrange对象
一、通用序列操作
所有的序列类型都可以进行某些特定的操作。这些操作包括:索引、分片、加、乘及检查某个元素是否属于序列的成员。
1.1 索引
>>> name = 'hongxue' >>> name[0] 'h' >>> name[0:3] 'hon' 这就是索引,字符串是一个由字符组成的序列。索引0指向第1个元素,在当前例子中就是h 可以通过索引获取元素 >>> str = raw_input('Year: ')[3] Year:2015 >>> str '5'
1.2 分片
索引是访问单个元素,分片与索引类似,但是它来访问的是一定范围内的元素,分片通过冒号隔开的两个索引实现:
分片操作对于提取序列的一部分是很有用的。而编号在这里显得尤为重要。第1个索引是要提取的第1个元素的编号,而最后的索引则是分片之后剩余部分的第1元素的编号。
(1) 优雅的捷径 >>> numbers = [1,2,3,4,5,6,7,8,9,10] >>> numbers[0:3] [1,2,3] >>> numbers[3:8] [4,5,6,7,8] >>> numbers[2:7] [3,4,5,6,7] numbers[-3:-1] [8,9] numbers[-3:] [8,9,10] numbers[:3] [1,2,3] numbers[:] [1,2,3,4,5,6,7,8,9,10] 分片示例: >>> name = raw_input('Please input your name:')[0:4] Please input your name:hongxue >>> print name 'hong'
(2) 更大的步长
进行分片的时候,分片的开始和结束点需要进行指定(不管是直接还是间接)。而另外一个参数–步长通常都是隐式设定的。默认为1,则可以手动进行设置
>>> print numbers[:] [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[::-2] [10,8,6,4,2] >>> numbers[5::-2] [6,4,2] >>> numbers[:5:-2] [10,8] 对于一个正数步长,Python会从序列的头部开始向右提取元素,直到最后一个元素, 对于一个负数步长,Python会从序列的尾部开始向左提取元素,直到第一个元素。
1.3 序列相加
通过使用加运算符可以进行序列的连接操作:
>>> [1,2,3] + [4,5,6] [1,2,3,4,5,6] >>> x = ['hong'] >>> y = ['xue'] >>> x + y ['hong','xue'] 当然,列表和字符串是无法连接在一起的,尽管它们都是序列。 两种类型相同的序列才能进行连接操作,例如: >>> x = '123' >>> y = ['4,5,6'] >>> x + y Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'list' objects
1.4 乘法
用数字x乘以一个序列会生成新的序列,而在新的序列中,原来的序列将被重复n次
>>> 'Python' * 5 'PythonPythonPythonPythonPython' >>> [30] * 10 '30,30,30,30,30,30,30,30,30,30'
None、空列表和初始化
空列表可以简单的通过两个中括号进行表示,里面什么也没有。但是,如果想创建一个占用十个元素空间,却不包括任何有用内容的列表,可以想前面那样,[42] * 10,这样会更加实际一些。然而,有时候可能会需要一个值来代表空值—意味着里面没有任何东西,这个时候就需要用到None,None是Python的内键值,它的确切含义是”这里什么也没有”。
创建占用十个元素的空间 >>> [] * 10 [] 创建一个空值 >>> Value = [None] * 10 >>> Value [None,None,None,None,None,None,None,None,None,None]
代码清单 序列(字符串)乘法表示 sentence = raw_input('Sentence: ') screen_width = 80 text_width = len(setence) box_width = text_width + 6 left_margin = (screen_width - box_width) / 2 print print ' ' * left_margin + '+' + '-' * (box_width-2) + '+' print ' ' * left_margin + '| ' + ' ' * text_width + '|' print ' ' * left_margin + '| ' + sentence + '|' print ' ' * left_margin + '| ' + ' ' * text_width + '|' print ' ' * left_margin + '+' + ‘-’ * (box_width-2) + '+' print
1.5 成员资格
为了检查一个值是否在序列中,可以使用in运算符,这个运算符检查某个条件是否为真,然后返回相应的值,也叫做’布尔值’
条件为真返回True 条件为假返回False >>> permissions='rw' >>> 'r' in permissions >>> 'w' in permissions >>> 'x' in permissions #检查用户是否在name列表中 >>> name = ['hongxue','xiaomao','yixiao'] >>> 'hongxue' in name >>> 'xiaomao' in name
#检查用户名和PIN码 >>> database = [['hongxue','123'],['yixiao','456'],['xiaomao','789']] >>> username = raw_input('User name: ') >>> pin = raw_input('PIN code: ') >>> if [username,pin] in database : print 'Access granted'
1.6 长度、最小值和最大值
内建函数len、min和max非常有用
len函数返回序列中所包含元素的数量 min函数返回序列中最小的元素 max函数返回序列中最大的元素 numbers = [456,214,999] >>> len(numbers) #返回元素个数 3 >>> min(numbers) #返回最小元素 214 >>> max(numbers) #返回最大元素 999
相关文章推荐
- 利用Python访问Mysql数据库
- python库的安装方法
- 常见Python异常
- python unittest 深入failfast及实际应用【示例】
- Python经常使用第三方工具、库、骨架
- Python基础学习笔记之一
- 十八、python 对文件读写
- Python sys.argv
- 机器学习实战2:k近邻算法KNN(python)
- 用python调用C的动态链接库
- [LeetCode]题解(python):007-Reverse Integer
- python随机数函数
- 初学Python
- python写入文件乱码处理
- python调用C函数
- [LeetCode]题解(python):006-ZigZag Conversion
- Python+OpenCV学习(6)---傅里叶变换
- 使用python实现自动“扫描检测硬件改动”功能
- crontab 定时运行python程序遇到的一个错误
- python twisted 框架 client 和server 模型