python编程实例之数据结构

发布时间:2020-06-02编辑:脚本学堂
本文介绍了python中数据结构的相关知识,python编程实例之数据结构教程,需要的朋友参考下。

本节内容:
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])