列表和元组
列表是可以修改的,元组不可以
通用的序列操作:索引、切片、相加、相乘、成员资格检查
- 索引:序列中的所有元素都有编号——从0开始递增。可使用索引来获取元素。可使用使用负数索引时,Python将从右(即从最后一个元素)开始往左数索引来获取元素。
>>> greeting = 'Hello'
>>> greeting[0]
'H'
>>> greeting[-1]
'o'
- 切片:访问特定范围内的元素,可使用两个索引,并用冒号分隔。第一个索引指定的元素包含在切片内,但第二个索引指定的元素不包含在切片内。
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[3:6]
[4, 5, 6]
>>> numbers[0:1]
[1]
简写&步长
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[-3:]
[8, 9, 10]
>>> numbers[:3]
[1, 2, 3]
>>> 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]
- 序列相加:可使用加法运算符来拼接序列。
>>> [1, 2, 3] + [4, 5, 6]
[1, 2, 3, 4, 5, 6]
>>> 'Hello,' + 'world!'
'Hello, world!'
- 乘法:将序列与数x相乘时,将重复这个序列x次来创建一个新序列。
>>> 'python' * 5
'pythonpythonpythonpythonpython'
- 成员资格:检查特定的值是否包含在序列中,可使用运算符 in 。
>>> permissions = 'rw'
>>> 'w' in permissions
True
>>> 'x' in permissions
False
基本列表操作
- 修改列表:给元素赋值
>>> x = [1, 1, 1]
>>> x[1] = 2
>>> x
[1, 2, 1]
- 删除元素
>>> names = ['Alice', 'Beth', 'Cecil', 'Dee-Dee', 'Earl']
>>> del names[2]
>>> names
['Alice', 'Beth', 'Dee-Dee', 'Earl']
- 给切片赋值
>>> name = list('Perl')
>>> name
['P', 'e', 'r', 'l']
>>> name[2:] = list('ar')
>>> name
['P', 'e', 'a', 'r']
列表方法
- append:方法 append 用于将一个对象附加到列表末尾
>>> lst = [1, 2, 3]
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]
- clear:方法 clear 就地清空列表的内容
>>> lst = [1, 2, 3]
>>> lst.clear()
>>> lst
[]
- copy:方法 copy 复制列表
>>> a = [1, 2, 3]
>>> b = a
>>> b[1] = 4
>>> a
[1, 4, 3]
- count:方法 count 计算指定的元素在列表中出现了多少次
>>> ['to', 'be', 'or', 'not', 'to', 'be'].count('to')
2
>>> x = [[1, 2], 1, 1, [2, 1, [1, 2]]]
>>> x.count(1)
2
>>> x.count([1, 2])
1
- extend:方法 extend 让你能够同时将多个值附加到列表末尾,为此可将这些值组成的序列作为参数提供给方法 extend
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
- index:方法 index 在列表中查找指定值第一次出现的索引
>>> knights = ['We', 'are', 'the', 'knights', 'who', 'say', 'ni']
>>> knights.index('who')
4
- insert:方法 insert 用于将一个对象插入列表
>>> numbers = [1, 2, 3, 5, 6, 7]
>>> numbers.insert(3, 'four')
>>> numbers
[1, 2, 3, 'four', 5, 6, 7]
- pop:方法 pop 从列表中删除一个元素(末尾为最后一个元素),并返回这一元素
>>> x = [1, 2, 3]
>>> x.pop()
3
>>> x
[1, 2]
- remove:方法 remove 用于删除第一个为指定值的元素
>>> x = ['to', 'be', 'or', 'not', 'to', 'be']
>>> x.remove('be')
>>> x
['to', 'or', 'not', 'to', 'be']
- reverse:方法 reverse 按相反的顺序排列列表中的元素
>>> x = [1, 2, 3]
>>> x.reverse()
>>> x
[3, 2, 1]
- sort:方法 sort 用于对列表就地排序。就地排序意味着对原来的列表进行修改,使其元素按顺序排列,而不是返回排序后的列表的副本
>>> x = [4, 6, 2, 1, 7, 9]
>>> x.sort()
>>> x
[1, 2, 4, 6, 7, 9]
元组
- 与列表一样,元组也是序列,唯一的差别在于元组是不能修改的
- 元组的用处
- 它们用作映射中的键(以及集合的成员),而列表不行
- 有些内置函数和方法返回元组,这意味着必须跟它们打交道
字典
基本字典操作
- 与列表的类似处
- len(d) 返回字典 d 包含的项(键值对)数
- d[k] 返回与键 k 相关联的值
- d[k] = v 将值 v 关联到键 k
- del d[k] 删除键为 k 的项
- k in d 检查字典 d 是否包含键为 k 的项
- 与列表的不同处
- 键的类型:字典中的键可以是整数,但并非必须是整数
- 自动添加:即便是字典中原本没有的键,也可以给它赋值,这将在字典中创建一个新项
- 成员资格:表达式 k in d (其中 d 是一个字典)查找的是键而不是值,而表达式 v in l (其中 l 是一个列表)查找的是值而不是索引
将字符串格式设置功能用于字典
- 必须使用 format_map 来指出你将通过一个映射来提供所需的信息
>>> phonebook{'Beth': '9102', 'Alice': '2341', 'Cecil': '3258'}
>>> "Cecil's phone number is {Cecil}.".format_map(phonebook)
"Cecil's phone number is 3258."
字典方法
- clear:方法 clear 删除所有的字典项,这种操作是就地执行的(就像 list.sort 一样),因此什么都不返回(或者说返回 None )
>>> d = {}
>>> d['name'] = 'Gumby'
>>> d['age'] = 42
>>> d
{'age': 42, 'name': 'Gumby'}
>>> returned_value = d.clear()
>>> d
{}
>>> print(returned_value)
None
- copy:方法 copy 返回一个新字典,其包含的键值对与原来的字典相同(这个方法执行的是浅复制,因为值本身是原件,而非副本)
- fromkeys:方法 fromkeys 创建一个新字典,其中包含指定的键,且每个键对应的值都是 None
>>> dict.fromkeys(['name', 'age'])
{'age': None, 'name': None}
- get:方法 get 为访问字典项提供了宽松的环境
>>> d = {}
>>> print(d.get('name'))
None
- items:方法 items 返回一个包含所有字典项的列表,其中每个元素都为 (key, value) 的形式
>>> d = {'title': 'Python Web Site', 'url': 'http://www.python.org', 'spam': 0}
>>> d.items()
dict_items([('url', 'http://www.python.org'), ('spam', 0), ('title', 'Python Web Site')])
- keys:方法 keys 返回一个字典视图,其中包含指定字典中的键
- pop:方法 pop 可用于获取与指定键相关联的值,并将该键值对从字典中删除
>>> d = {'x': 1, 'y': 2}
>>> d.pop('x')
1
>>> d
{'y': 2}
- popitem:随机地弹出一个字典项
>>> d = {'url': 'http://www.python.org', 'spam': 0, 'title': 'Python Web Site'}
>>> d.popitem()
('url', 'http://www.python.org')
>>> d
{'spam': 0, 'title': 'Python Web Site'}
- setdefault:方法 setdefault 有点像 get ,因为它也获取与指定键相关联的值,但除此之外, setdefault还在字典不包含指定的键时,在字典中添加指定的键值对
>>> d = {}
>>> d.setdefault('name', 'N/A')
'N/A'
>>> d
{'name': 'N/A'}
- update:方法 update 使用一个字典中的项来更新另一个字典
- values:方法 values 返回一个由字典中的值组成的字典视图
>>> d = {}
>>> d[1] = 1
>>> d[2] = 2
>>> d[3] = 3
>>> d[4] = 1
>>> d.values()
dict_values([1, 2, 3, 1])