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() 等,用法与列表一样。

列表与元组的速度比较

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

字典


字典是一种映射类型,字典没有顺序,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() 来进行创建

你可能感兴趣的:(3.Python-列表,元组,字典和集合)