序列概述
从0开始指出相对于序列开头的偏移量。这显得更自然,同时可回绕到序列末尾,用负索引表示序列末尾元素的位置。
禁止修改序列通常出于技术方面的考虑,与Python的内部工作原理相关,这也是有些内置函数返回元组的原因所在。
索引
如果函数调用返回一个序列,可直接对其执行索引操作。
>>> fourth = input('Year: ')[3]
Year: 2005
>>> fourth '5'
执行切片操作时,如果第一个索引指定的元素位于第二个索指定的元素后面,结果就为空序列。
如果切片结束于序列末尾,可省略第二个索引. 要复制整个序列,可将两个索引都省略。
序列
步长
步长不能为0,否则无法向前移动,但可以为负数,即从右向左提取元素。
>>> numbers[8:3:-1]
[9, 8, 7, 6, 5]
>>> numbers[10:0:-2]
序列相加
可使用加法运算符来拼接序列。一般而言,不能拼接不同类类型的序列。
将序列与数x相乘时,将重复这个序列x次来创建一个新序列。
None、空列表和初始化
如果要创建一个可包含10个元素的列表,但没有任何有用的内容,可以使用[0]*10
。然而,在有些情况下,你可能想使用表示“什么都没有”的值,如表示还没有在列表中添加任何内容。在这种情况下,可使用None。可像下面这样做:
>>> sequence = [None] * 10
>>> sequence [None, None, None, None, None, None, None, None, None, None]
成员资格
可使用运算符in
来检查指定的字符串是否为另一个字符串的子串。
max(lst)
,min(lst)
,len(lst)
或者 max(num1, num2, num3,)
同理min()
列表
鉴于不能像修改列表那样修改字符串:
>>> list('Hello')
['H', 'e', 'l', 'l', 'o']
请注意,可将任何序列(而不仅仅是字符串)作为list的参数。
要将字符列表(如前述代码中的字符列表)转换为字符串,可使用下面的表达式:''.join(somelist)
列表基本操作
-
修改列表:给元素赋值
不能给不存在的元素赋值,因此如果列表的长度为2,就不能给索引为100的元素赋值。
-
删除元素
>>> names = ['Alice', 'Beth', 'Cecil', 'Dee-Dee', 'Earl'] >>> del names[2] >>> names ['Alice', 'Beth', 'Dee-Dee', 'Earl']
-
给切片赋值
- 可将切片替换为长度与其不同的序列。
- 可在不替换原有元素的情况下插入新元素。
- 通过切片删除元素。
- 步长不为1的为切片赋值。
列表方法
-
append : 就地修改列表。
-
clear : 就地清空列表的内容。
>>> lst = [1, 2, 3] >>> lst.clear() >>> lst []
这类似于切片赋值语句lst[:] = []。
-
copy : 复制列表. 常规复制只是将另一个名称关联 到列表
>>> a = [1, 2, 3] >>> b = a >>> b[1] = 4 >>> a [1, 4, 3]
要让a和b指向不同的列表,就必须将b关联到a的副本
>>> a = [1, 2, 3] >>> b = a.copy() >>> b[1] = 4 >>> a [1, 2, 3]
这类似于使用
a[:]
或list(a)
,它们也都复制a。 -
count 计算指定的元素在列表中出现了多少次。
-
extend : 使用一个列表来扩展另一个列表,就地修改比
a=a+b
效率高。 -
index : 查找指定值第一次出现的索引
-
insert
-
pop : 从列表中删除一位元素(默认是最后一位),并返回这一元素
-
remove : 删除第一个为指定值的元素
-
reverse
如果要按相反的顺序迭代序列,可使用函数reversed。这个函数不返回列表,而是返回一个迭代器(迭代器将在第9章详细介绍)
-
sort 就地排序
为获取排序后的列表的副本,可以使用函数
sorted
.
pop是唯一既修改列表又返回一个非None值的列表方法。
高级排序
方法 sort
接受两个可选参数: key
和 reverse
。均为关键字参数.参数key
指向一个用于排序的函数. 函数sorted
也有这两个参数.
>> x = ['aardvark', 'abalone', 'acme', 'add', 'aerate']
>>> x.sort(key=len)
>>> x
['add', 'acme', 'aerate', 'abalone', 'aardvark']
元组
只要将一些值用逗号分隔,就能自动创建一个元组。
特殊:只包含一个值的元祖,虽然只有一个值,也必须在它后面加上逗号。
>>> 1, 2, 3
(1, 2, 3)
>>> 42
42
>>> 42,
(42,)
函数 tuple
的工作原理与 list
很像:它将一个序列作为参数,并将其转换为元组。如果参数已经是元组,就原封不动地返回它。