python的几种数据结构
Python 中 几种数据结构的整理: 列表、字典、元组、集合
列表 : shoplist = ['apple', 'mango', 'carrot' , 'banana']
字典 : di = {'a' : 123,'b' : 'something'}
集合 : jihe = {'apple', 'pear', 'apple'}
元组 : t = 123,456,"hello"
1. 列表
空列表 : a = []
函数方法 : a.append(3) >>>[3]
a.extend([3,4,5]) >>>[3,3,4,5] 添加一个列表序列
a.insert(1, 'hello') >>>[3,'hello',3,4,5]
a.remove(3) >>>['hello',3,4,5] 删除第一个出现的3,没有3则报错
a.pop() >>>['hello',3,4]
a.pop(0) >>>[3,4]
a.index(4) >>>1 返回出现的第一个4的下标
a.count(3) >>>> 1列表中元素3的个数
a.sort >>> [3,4] 排序
a.reverse() >>> [4,3] 反序
删除元素的方法
a.remove(3) 通过值删除元素,删除第一个参数值的元素
a.pop() 通过下标删除元素,默认删除列表最后一个值,带参数则删除下标为参数的元素
del a[0] 通过下标删除元素
del a[2:4] 删除a表下表为2,3的元素
del a[:] 删除a列表所有元素
del a 删除列表
列表推导式:
vec = [2,4,6]
[3*x for x in vec if x<6] >>>[6,12] 3*2,3*4
vec2 = [1,2,3]
[x*y for x in vec for y in vec2] >>>[2,4,6,4,8,12,6,12,18]
嵌套列表推导式
mat = [
[1,2,3]
[4,5,6]
[7,8,9]
]
print([[row[i] for row in mat] for i in [0,1,2]])
>>>[[1,4,7],[2,5,8],[3,6,9]]
思考 : list(zip(mat)) 和list(zip(*mat))结果会有什么不同
2. 元组
空元组 : t =()
元组赋值: t = (123,345)
t[] >>>123
3. 字典
d = {'Jack' : 'jack@mail.com','Tom':'Tom@main.com'}
d['Jack'] >>>'jack@mail.com'
d['Jack'] >>>{'Jim': 'Jim@sin.com', 'Jack': 'jack@mail.com', 'Tom': 'Tom@main.com'}
del d['Jim'] >>>{'Jack': 'jack@mail.com', 'Tom': 'Tom@main.com'}
list(d.keys()) 将返回一个字典中所有关键字组成的无序列表
sorted(d.keys()) 将返回一个字典中所有关键字组成的排序列表
dict() 构造函数可以直接从key-value对中创建字典
dict([('Tim',123),('Tiny',234)]) >>>{'Tiny': 234, 'Tim': 123}
推导式创建字典 :
{d2:d2+'@main.com' for d2 in list(d.keys())}
>>>{'Jack': 'Jack@main.com', 'Tom': 'Tom@main.com'}
练习: 循环输出字典中的键值对
for name.email in d.items():
print(name,email)
4. 集合
空集合 : A =set() 想要创建空集合,必须使用set()
演示:
basket = {'apple','orange','apple'} >>>{'orange', 'apple'} 注意重复的元素只显示一个?
'apple' in basket >>>True
'pear' in basket >>>False
集合的数学运算:
a = set('ababcdabca') >>>{'c', 'b', 'a', 'd'}
b = {'a','b','m'} >>>{'b', 'a', 'm'}
a - b >>>{'c', 'd'}
b - a >>>{'m'}
a | b >>>{'c', 'd', 'b', 'a', 'm'}
a & b >>>{'a','b'}
a ^ b >>>{'c','d','m'}
集合推导式:
{x for x in a if x not in 'ab'} >>>{'c','d'}