本节内容:
python数据结构列表元组字典
1.列表
(1) 建立列表
复制代码 代码示例:
list(‘python’)
['p', 'y', 't', 'h', 'o', 'n']
(2)列表的常用方法:
append 在列表末尾添加元素
复制代码 代码示例:
>>>l=[‘a’,’b’,’c’]
>>>l.append(‘d’)
>>>l
['a','b','c','d']
count 统计某个元素在列表中出现的次数
复制代码 代码示例:
>>>['a','a','b','c'].count('a')
2
extend 扩展一个列表
复制代码 代码示例:
>>>a=[1,2]
>>>b=[3,4]
>>>a.extend(b)
>>>a
[1,2,3,4]
insert 插入一个对象
复制代码 代码示例:
>>>a=[1,2,3]
>>>a.insert(1,0)
>>>a
[1,0,2,3]
remove 移除1个对象 只会移除第一个对应的值
复制代码 代码示例:
>>>a=[1,1,2,3]
>>>a.remove(1)
a
[1,2,3]
index 返回索引位置
复制代码 代码示例:
>>>a=[1,2,3]
>>>a.index(2)
1
pop() 删除最后一个元素,并返回最后一个元素
复制代码 代码示例:
>>>a=[1,2,3]
>>>a.pop()
3
reverse 反序存放列表元素
复制代码 代码示例:
>>>a=[1,2,3]
>>>a.reverse()
>>>a
[3,2,1]
sort() 排序
>>>a=[2,1,3]
>>>a.sort()
>>>a
[1,2,3]
2.元组
元组与列表的不同之处在于,元组一旦创建之后不可修改
(1) 建立元组
复制代码 代码示例:
>>>tuple((1,2,3))
(1,2,3)
也可以使用列表建立元组
复制代码 代码示例:
>>>tuple([1,2,3])
(1,2,3)
元组不能修改,所以没有append remove 等操作
元组的优势在于,他比列表的速度快,如果不想修改元素,仅仅有查询等操作,使用元组更好。在不希望修改元素的场合,使用元组更加安全,元组还可以作为字典的键值,列表不可以。
3.字典
(1)创建字典
复制代码 代码示例:
>>>d={'a':1,'b':2}
>>>d
{'a': 1, 'b': 2}
也可以使用dict 函数创建字典,
复制代码 代码示例:
>>>m=[('a',1),('b',2)]
>>>d=dict(m)
>>>d
{'a': 1, 'b': 2}
(2)字典的常用方法
clear 清除字典的键值对
copy 返回一个具有相同键值对的新字典
复制代码 代码示例:
>>>x={'a':1,'b',2}
>>>y=x.copy()
>>>y
{'a':1,'b':2}
fromkeys 使用所给的键来创建字典
复制代码 代码示例:
>>>{}.fromkeys(['name','age'])
{'age':None,'name':None}
get 查询某个键对应的值
复制代码 代码示例:
>>>d={'a':1,'b':2}
>>>d.get('a')
1
haskey 检查字典是否有某个键
复制代码 代码示例:
>>>d={'a':1,'b':2}
>>>d.haskey('a')
1
items() 将字典中所有键值对按照列表的形式返回
keys() 将字典中所有的键按照列表的形式返回
values() 将字典中的所有的值按照列表的形式返回
复制代码 代码示例:
>>>d={'a':1,'b':2}
>>>d.items()
[('a', 1), ('b', 2)]
>>>d.keys()
['a','b']
>>>d.values()
[1,2]
pop() 删除某个键值对
popitem()删除一个键值对
update() 用某个键值对更新字典
复制代码 代码示例:
>>>d={'a':1,'b':2}
>>>u={'a':3,'b':2}
>>>d.update(u)
>>>d
{'a':3,'b':2}
4.集合
集合类似于列表,与列表不同的是它的元素是无序的,不能使用元素的顺序操作集合
(1)建立集合
复制代码 代码示例:
>>>set(range(5))
set([0, 1, 2, 3, 4])
(2)集合的常用方法
复制代码 代码示例:
union() 取并集
difference() 取差集
intersection() 取交集
issubset() 判断是否为子集
issuperset() 判断是否为超集
>>>a=set([1,2])
>>>b=set([2,3])
>>>a.union(b)
set([1, 2, 3])
>>>a.difference(b) #在a中而不在b中的元素
set([1])
>>>a.intersection(b) #a和b的交集
set([2])
add() 向集合添加一个元素
remove() 集合删除一个元素
clear() 清除集合中的元素
>>>s=set([1,2,3])
>>>s.add(4)
>>>s
set([1, 2, 3, 4])
>>>s.remove(4)
>>>s
set([1, 2, 3])
>>>s.clear()
set([])
5.堆
堆是优先队列的一种,python可以使用模块heapq来使用堆
堆得操作有 heappush(heap,x) 将x入堆
heappop() 将堆中的最小值弹出
nlargest(n,iter) 返回iter中前n大的元素
nsmallest(n,iter) 返回iter中n小的元素
复制代码 代码示例:
>>>from headq import *
>>>h=[];
>>>for i in range(5):
heappush(h,i)
>>>heap
[0, 1, 2, 3, 4]
>>>heappop(h)
0
>>>nlargest(2,h)
[4, 3]
>>>nsmallest(2,h)
[1, 2]
6.双端队列
python中可以使用deque模块来操作双端队列
双端的操作有:append() 在尾部添加 appendleft() 在左侧添加 pop()删除最后一个元素 popleft() 删除最左端一个元素
复制代码 代码示例:
>>>from collections import deque
>>>q=deque(range(3))
>>>q.appendleft(0)
>>>q.append(3)
>>>q
deque([0, 0, 1, 2, 3])
>>>q.pop()
3
>>>q.popleft()
0
>>>q
deque([0, 1, 2])