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])
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容