2019-03-14 列表&字典学习

列表和元组

列表是可以修改的,元组不可以
通用的序列操作:索引、切片、相加、相乘、成员资格检查
  • 索引:序列中的所有元素都有编号——从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]
元组
  • 与列表一样,元组也是序列,唯一的差别在于元组是不能修改的
  • 元组的用处
    1. 它们用作映射中的键(以及集合的成员),而列表不行
    2. 有些内置函数和方法返回元组,这意味着必须跟它们打交道

字典

基本字典操作
  • 与列表的类似处
    1. len(d) 返回字典 d 包含的项(键值对)数
    2. d[k] 返回与键 k 相关联的值
    3. d[k] = v 将值 v 关联到键 k
    4. del d[k] 删除键为 k 的项
    5. k in d 检查字典 d 是否包含键为 k 的项
  • 与列表的不同处
    1. 键的类型:字典中的键可以是整数,但并非必须是整数
    2. 自动添加:即便是字典中原本没有的键,也可以给它赋值,这将在字典中创建一个新项
    3. 成员资格:表达式 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])
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容