Python中序列的通用操作

1 序列概述

Python内置了多种序列,本章重点讨论其中最常用的两种: 列表和元组。还有另一种重要的序列是字符串。
列表和元组的主要不同在于,列表是可以修改的,而元组不可以。在你自己编写程序时,几乎在所有情况下都可使用列表来代替元组。一种例外情况是将元组用作字典键,这将在第4章讨论。在这种情况下,不能使用列表来代替元组,因为字典键是不允许修改的。
序列还可包含其他序列,因此可创建一个由数据库中所有人员组成的列表:
>>> edward = [‘Edward Gumby’, 42]
>>> john = [‘John Smith’, 50]
>>> database = [edward, john]
>>> database
[[‘Edward Gumby’, 42], [‘John Smith’, 50]]
Python支持一种数据结构的基本概念,名为容器( container)。容器基本上就是可包含其他对象的对象。两种主要的容器是序列(如列表和元组)和映射(如字典)。在序列中,每个元素都有编号,而在映射中,每个元素都有名称(也叫键)。有一种既不是序列也不是映射的容器,它就是集合(set)。

2 通用的序列操作

有几种操作适用于所有序列,包括索引、 切片、 相加、 相乘和成员资格检查。另外, Python还提供了一些内置函数,可用于确定序列的长度以及找出序列中最大和最小的元素。
2.1 索引
>>> greeting = ‘Hello’
>>> greeting[0]
‘H’
>>> greeting[-1]
'o

>>> fourth = input('Year: ')[3]
Year: 2005
>>> fourth
‘5’

2.2 切片
>>> tag = ‘Python web site
>>> tag[9:30]
‘http://www.python.org’
>>> tag[32:-4]
‘Python web site’
2.2.1 简写
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[7:10]
[8, 9, 10]
>>> numbers[-3:0]
[]
事实上,执行切片操作时,如果第一个索引指定的元素位于第二个索
引指定的元素后面(在这里,倒数第3个元素位于第1个元素后面),结果就为空序列。
>>> numbers[-3:]
[8, 9, 10]
>>> numbers[:3]
[1, 2, 3]
>>> numbers[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2.2.2 更大的步长
>>> numbers[0:10:2]
[1, 3, 5, 7, 9]
>>> numbers[::4]
[1, 5, 9]
步长不能为0,否则无法向前移动,但可以为负数,即从右向左提取元素。
>>> 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]

2.3 序列相加
>>> [1, 2, 3] + [4, 5, 6]
[1, 2, 3, 4, 5, 6]
>>> ‘Hello,’ + ‘world!’
‘Hello, world!’
>>> [1, 2, 3] + ‘world!’
Traceback (innermost last):
File “”, line 1, in ?
[1, 2, 3] + ‘world!’
TypeError: can only concatenate list (not “string”) to list
从错误消息可知,不能拼接列表和字符串,虽然它们都是序列。一般而言,不能拼接不同类
型的序列。

2.4 序列乘法
>>> ‘python’ * 5
‘pythonpythonpythonpythonpython’
>>> [42] * 10
[42, 42, 42, 42, 42, 42, 42, 42, 42, 42]
None、空列表和初始化
空列表是使用不包含任何内容的两个方括号( [])表示的。在Python中, None表示什么
都没有。因此,要将列表的长度初始化为10,可像下面这样做:
>>> sequence = [None] * 10
>>> sequence
[None, None, None, None, None, None, None, None, None, None]

2.5 成员资格
要检查特定的值是否包含在序列中,可使用运算符in。它检查是否满足指定的条件,并返回相应的值:满足时返回True,不满足时返回False。
>>> permissions = ‘rw’
>>> ‘w’ in permissions
True
>>> ‘x’ in permissions
False
>>> users = [‘mlh’, ‘foo’, ‘bar’]
>>> input('Enter your user name: ') in users
Enter your user name: mlh
True

2.6 内置函数:长度、最小值和最大值
内置函数len、 min和max很有用,其中函数len返回序列包含的元素个数,而min和max分别返回序列中最小和最大的元素。
>>> numbers = [100, 34, 678]
>>> len(numbers)
3
>>> max(numbers)
678
>>> min(numbers)
34

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值