关闭

python中的数据结构

150人阅读 评论(0) 收藏 举报

http://blog.csdn.net/u011608357/article/details/26143339


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])


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:66652次
    • 积分:1217
    • 等级:
    • 排名:千里之外
    • 原创:46篇
    • 转载:68篇
    • 译文:0篇
    • 评论:3条
    最新评论