3.Python-列表,元组,字典和集合

列表

Python中列表是一个有序的序列。空列表 可以用 [] 或者 list() 生成.
列表用一对 []生成,中间的元素用 ', ' 隔开,其中的元素不需要是同一类型,同时列表的长度也不固定。

通过索引和分片修改list

与字符串不同的是,列表可以通过索引和分片来修改。
事实上,对于连续的分片(即步长为 1 ),Python采用的是整段替换的方法,两者的元素个数并不需要相同

a = [10, 11, 12, 13, 14]
a[1:3] = [1, 2, 3, 4]
a
#out: [10, 1, 2, 3, 4, 13, 14]

对于不连续(间隔step不为1)的片段进行修改时,两者的元素数目必须一致

a = [10, 11, 12, 13, 14]
a[::2] = [1, 2, 3]
a
#out: [1, 11, 2, 13, 3]

列表方法

列表方法 用法 detail
计算元素个数 l.count(ob) 列表中元素 ob 出现的次数
某个元素位置 l.index(ob) 列表中元素 ob 第一次出现的索引位置,如果 ob 不在 l 中会报错
添加单个元素 l.append(ob) 将元素 ob 添加到列表 l 的最后
添加序列 l.extend(lst) 将序列 lst 的元素依次添加到列表 l 的最后,作用相当于 l += lst
插入元素 l.insert(idx, ob) 在索引 idx 处插入 ob ,之后的元素依次后移
移除元素 l.remove(ob) 将列表中第一个出现的 ob 删除,如果 ob 不在 l 中会报错
弹出元素 l.pop(idx) 将索引 idx 处的元素删除,并返回这个元素
排序 l.sort() 将列表中的元素按照一定的规则排序
列表反向 l.reverse() 将列表中的元素从后向前排列
拷贝 l.copy 创建列表浅拷贝,深拷贝用copy模块中的deepcopy()

元组

与列表相似,元组Tuple也是个有序序列,但是元组是不可变的,用()生成。

元组排序:

可以用sorted(a)排序,不会改变元组,a.sort()不可用,回报错

元组函数和方法

元组函数: len(), max(),min(),tuple(a)
由于元组是不可变的,所以只能有一些不可变的方法,如计算元素个数 a.count() 和元素位置 a.index() 等,用法与列表一样。

列表与元组的速度比较

元组的生成速度会比列表快很多,迭代速度快一点,索引速度差不多。

字典

</center>
字典是一种映射类型,字典没有顺序,key必须是不可变类型,而value可以是任意python对象,int和string最常用作key,但float不推荐。元组也可以用做key。
Python中不能用支持用数字索引按顺序查看字典中的值,而且数字本身也有可能成为键值,这样会引起混淆。

字典操作

常见操作 用法
空字典 使用 {} 或者 dict(),只要元素和元素之间有对应关系都可用dict()
初始化字典 a= {key: value,key: value,...}
插入,更新键值 a[key]=value
查看键值 a[key]
成员判断 in
删除字典成员 del a[key]
转化来生成字典 通过 dict()
invent = dict([('from', 18), ('spat', 34), ('snit', 23)])
invent
#out: {'from': 18, 'snit': 23, 'spat': 34}

字典方法

列表方法 用法 detail
get d.get(key, default = None) 返回字典中键对应的值,如果没有这个键,返回 default 指定的值(默认是 None)。索引不存在的键值会报错,get不会:
pop d.pop(key, default = None) 删除并返回字典中键 key 对应的值,如果没有这个键,返回 default 指定的值(默认是 None )
update d.update(newd) 将字典newd中的内容更新到d中去
in value in d 判断字典中是否有某个特定的键
clear d.clear() 清空字典
key d.keys() 返回一个由所有键组成的列表;
value d.values() 返回一个由所有值组成的列表;
items d.items() 返回一个由所有键值对元组组成的列表;

例: update()的用法

person = {'born': 1831, 'last': 'Maxwell', 'first': 'Jmes'}
person_modi = {'first': 'James', 'middle': 'Clerk'}
person.update(person_modi)
person
#out: {'middle': 'Clerk', 'born': 1831, 'last': 'Maxwell', 'first': 'James'}

例: items()的用法

barn = {'cows': 1, 'dogs': 5, 'cats': 3}
barn.items()
#out: [('cows', 1), ('cats', 3), ('dogs', 5)]
for key, value in barn.items():

例: 创建员工信息表时,将所有员工工资默认为3000

aDict={}.formatkeys(('A','B','C','D'),3000)
aDict
#out: {'A':3000, 'B':3000, 'C':3000, 'D':3000}

例: 已知姓名列表和工资列表,生成字典类型员工

names=['A','B','C','D']
salaries=[3000,2000,15000,2500]
dict(zip(names, salaries))

集合

集合 set 是一种无序的序列

空集合:

set(), 创建空集合的时候只能用set来创建,因为在Python中{}创建的是一个空的字典

初始化集合:

可以使用一个列表来初始化一个集合a = set(l),集合会自动去除重复元素

集合操作

集合方法 用法 detail
a.union(b)a | b 包含两个集合所有元素的集合(去除重复)
a.intersection(b)a & b 返回包含两个集合共有元素的集合
a.difference(b)a - b 返回只在 a 不在 b 的元素组成的集合
对称差 a.symmetric_difference(b)a ^ b 不同时在 a 和 b 中的元素组成的集合
包含关系 b.issubset(a)b <= a 判断 b 是不是 a 的子集,判断真子集用a < a

集合方法

集合方法 用法 detail
add s.add(a) 跟列表的 append 方法类似,用来向集合添加单个元素
update s.update(seq) 跟列表的extend方法类似,用来向集合添加多个元素
remove s.remove(ob) 从集合s中移除元素ob,如果不存在会报错
pop s.pop() 集合没有顺序,所以删除并返回集合中任意一个元素,如果没有元素会报错
discard t.discard(ob) 作用与 remove 一样,但是当元素在集合中不存在的时候不会报错。
difference_update a.difference_update(b) 从a中去除所有属于b的元素

不可变集合

不可变集合一旦创建就不可变,使用 frozenset() 来进行创建

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

推荐阅读更多精彩内容