Python 的3大内置数据结构


1 列表

list 是python中最具灵活性的对象类型,它支持在原处修改,可以指定偏移值和分片,列表方法调用,删除语句等方法实现,它有点像数组,支持偏移读取,也支持分片读取。和数组不一样的是,列表长度是可变的,并且可以包含任意类型的对象,而不是要求统一的数据类型。

列表的一些常用操作

操作    解释
L1=[]    一个空的列表
L2 = [0, 1, 2, 3]    四元素列表
L3 = [‘abc’,10,[‘def’, ‘ghi’]    嵌套列表
L2[i]    索引
L3[i][j]    索引的索引
L2[i:j]    分片
len(L2)    求长度
L1 + L2    合并

L2 * 3    重复

列表常用方法

append(x)把一个元素添加到列表的末尾

extended(L)通过添加指定列表的所有元素来扩充列表,相当于a[len(a):]=L

insert(i,x)在指定位置插入一个元素

remove(x)删除列表中值为x的元素

pop([i])从列表指定的位置删除一个元素并返回,如果没有指定索引,那么久从末尾弹出一个元素

index(x)返回列表中第一个值为x的元素的索引

count(x)返回列表中元素x的个数

sort()对列表按自然序排序

reverse()倒序


可以通过函数组合把列表当做队列和堆栈用

append

pop


队列

del

append



元组

一个元组由数个逗号隔开的对象组成

t=(1,2,3)

元组在输出时总是有括号的,以便于正确表达嵌套结构。
在输入时,有或没有括号都可以,不过经常括号都是必须的(如果元组是一个更大的表达式的一部分)。

元组有点像字符串,不可改变元素的值,也不可通过索引给一个字符赋值,但是可以通过连接或切片来模仿一些操作


元组的封装和解封

语句t = 12345, 54321, ’hello!’ 是元组封装(sequence packing)的一个例子:值12345,54321 和’hello!’ 被封装进元组。其逆操作可能是这样:

这个调用被称为序列拆封非常合适。序列拆封要求左侧的变量数目与序列的元素个数相同

>>> t = [1, 2, 3]
>>> x, y, z = t
>>> print x, y, z
1 2 3

>>> s = "123"
>>> x,y,z = s
>>> print x, y, z
1 2 3


字典

字典类似于通过联系人名字查找地址和联系人详细情况的地址簿,即:我们把键(名字)和值(详细情况)联系在一起。注意,键必须是唯一的,就像如果有两个人恰巧同名的话,将无法找到正确的信息

字典的keys()方法返回由所有关键字组成的列表,该列表的顺序不定(如果需要它有序,只能调用返回列表的sort()方法)
使用字典的has_key()方法可以检查字典中是否存在某一关键字
字典的values()方法返回字典内所有的值
字典的get()方法可以根据关键字返回值,如果不存在输入的关键字,返回None

字典的update(anothordict)方法类似于合并,它把一个字典的关键字和值合并到另一个,盲目的覆盖相同键的值

字典的pop()方法能够从字典中删除一个关键字并返回它的值,类似于列表的pop方法,只不过删除的是一个关键字而不是位置

dict={'zhanghong':1988316,'zhanghong':2008,'liyanhong':1978316,'huangguanyue':1989316}
print(dict.has_key('zhanghong'))#返回是否含有某个键值
for value in dict.keys():#返回所有关键字组成的列表
    print(value)

for value in dict.values():#返回所有关键字对应的值组成的列表
    print(value)
    
print(dict.get('zhanghong'))#后面的值覆盖了前面的值

dict1={'1':1,'2:':2,'3':3}
dict2={'3':3,'4:':4}
dict1.update(dict2)#它把一个字典的关键字和值合并到另一个,盲目的覆盖相同键的值
 
for value in dict1.values():
    print(value)
"""
如果有一个键值对应多个值,你想取得前面的值,那么可以进行一个判断,然后取出相应值
但是在一个字典中不可能有重复的键值
比如要取得键为'zhanghong'-->1988316
"""   

相关内容