Python数据结构之列表元组字典的用法-创新互联
数据结构的含义
在学习数据结构之前,我们先来了解下数据结构的含义。数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构。在Python语言中,最基本的数据结构是序列(sequence)。序列中的每个元素被分配一个序号————即元素的位置,称为索引或下标,索引从0开始递增。
成都创新互联是网站建设专家,致力于互联网品牌建设与网络营销,专业领域包括成都网站设计、网站制作、电商网站制作开发、小程序定制开发、微信营销、系统平台开发,与其他网站设计及系统开发公司不同,我们的整合解决方案结合了恒基网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,且不断评估并优化我们的方案,为客户提供全方位的互联网品牌整合方案!典型的序列包括列表、元组和字符串。其中,列表是可变的(可修改),而元组和字符串是不可变的(一旦创建了就是固定的)。列表、元组和字符串也是较常用的数据结构。
本篇内容主要讲解Python的列表、元组、字典,下篇将会介绍字符串的操作。
列表 list,使用 [] 定义,[] 中的各个元素,用逗号分隔。
例子
- 定义一个名为 all_star,包含 Kobe,TMAC,LBJ元素的列表
>>> all_star = ["Kobe","TMAC","LBJ"] >>> print(all_star) ['Kobe', 'TMAC', 'LBJ']
- 列表也可以包含列表,例如:
>>> east_star = ["Irving","Wall","Love"] >>> west_star = ["Curry","KD","Harden"] >>> all_star = [west_star,east_star] >>> print(all_star) [['Curry', 'KD', 'Harden'], ['Irving', 'Wall', 'Love']]
- 或者
>>> all_star = [["Kobe","TMAC"],["LBJ","BOSH"]] >>> print(all_star) [['Kobe', 'TMAC'], ['LBJ', 'BOSH']]
列表支持增删改查
所有序列类型都可以进行某些特定操作,由对象属性决定。这些操作包括:索引(indexing)、切片(sliceing)、加(adding)、乘(multiplying)以及检查某些元素是否属于序列成员、计算序列长度、找出大、最小元素的内置函数。
查,使用单个索引一次能取出一个元素,使用切片,可以取出指定范围内的元素,分片通过两个冒号相隔的两个索引值实现。
- 例子1,单个索引获取元素,获取all_star列表中名叫Kobe的元素
>>> all_star = ["Kobe","TMAC","LBJ"] #元素的下标也就是索引,从0开始,逐个递增。Kobe的元素下标为0,TMAC为1,LBJ为2 >>> print(all_star[0]) Kobe >>> all_star = [["Kobe","TMAC"],["LBJ","BOSH"]] >>> print(all_star[0][0]) Kobe
- 例子2,切片的使用
>>> all_star = ['Curry', 'KD', 'Harden','Irving', 'Wall', 'Love'] #索引范围,左侧包含,右侧不包含,当想取前3个元素的话,切片范围为0:3. >>> all_star[0:3] ['Curry', 'KD', 'Harden']
#从第一个元素,取到最后一个元素 >>> all_star[1:] ['KD', 'Harden', 'Irving', 'Wall', 'Love']
#忽略第一个和最后一个元素 >>> all_star[1:-1] ['KD', 'Harden', 'Irving', 'Wall']
#从第二个元素开始,每隔一个取一个,2表示步长,默认步长为1. >>> all_star[1:-1:2] ['KD', 'Irving']
#在下标为2的位置,从右向左取值,直到最后一个值。 >>> all_star[2::-1] ['Harden', 'KD', 'Curry']
增,append(),insert()
- 例子:
>>> all_star ['Curry', 'KD', 'Harden', 'Irving', 'Wall', 'Love'] #把元素添加到最后 >>> all_star.append("LBJ") >>> all_star ['Curry', 'KD', 'Harden', 'Irving', 'Wall', 'Love', 'LBJ']
#把元素插入到指定位置 >>> all_star.insert(2,"Westbrook") >>> all_star ['Curry', 'KD', 'Westbrook', 'Harden', 'Irving', 'Wall', 'Love', 'LBJ']
改,采用直接替换的方式
- 例子:
>>> all_star ['Curry', 'KD', 'Westbrook', 'Harden', 'Irving', 'Wall', 'Love', 'LBJ'] #为需要替换的元素下标赋予新值 >>> all_star[6]="George" >>> all_star ['Curry', 'KD', 'Westbrook', 'Harden', 'Irving', 'Wall', 'George', 'LBJ']
删,remove()、pop()、del
- 例子:
#remove()方法直接删除内容 >>> all_star.remove("LBJ") >>> all_star ['Curry', 'KD', 'Westbrook', 'Harden', 'Irving', 'Wall', 'George']
#pop()方法根据索引值删除内容,并返回删除的值 >>> all_star.pop(6) 'George' >>> all_star ['Curry', 'KD', 'Westbrook', 'Harden', 'Irving', 'Wall']
#del命令根据索引值删除内容,没有返回 >>> del all_star[5] >>> all_star ['Curry', 'KD', 'Westbrook', 'Harden', 'Irving']
#del命令删除列表对象 >>> del all_star >>> all_star Traceback (most recent call last): File "
", line 1, in NameError: name 'all_star' is not defined 一些内置函数:
- count() 统计元素出现的次数
>>> list1 = [1,2,3,4,5,4,3,2,1,1,0,1] >>> list1.count(1) 4
- extend() 在列表末尾一次性追加另一个序列中的多个值,有扩展列表的功能。
>>> list1 = [1,2,3] >>> list2 = [4,5,6] >>> list1.extend(list2) >>> list1 [1, 2, 3, 4, 5, 6]
- index() 获取索引值,当我们知道一个序列的值而不知道期下标是多少,可以使用index函数
>>> list1 [1, 2, 3, 4, 5, 6] >>> list1.index(4) 3
- reverse() 调转序列顺序
>>> list1 = [1,2,3,4,5,6] >>> list1.reverse() >>> print(list1) [6, 5, 4, 3, 2, 1]
- sort() 排序
>>> list1 = [1,9,3,7,2,6,0] >>> list1.sort() >>> list1 [0, 1, 2, 3, 6, 7, 9] >>> list1.sort(reverse=True) >>> list1 [9, 7, 6, 3, 2, 1, 0]
- len() 获取序列长度
>>> len(list1) 7
- max() 获取序列的大值
>>> max(list1) 9
- min() 获取元素的最小值
>>> min(list1) 0
- list() 适用于所有类型的序列。字符串不能像列表一样被修改,所以有时根据字符串创建列表会很有用
>>> h = list("hello") >>> h ['h', 'e', 'l', 'l', 'o']
- join() 可以将一个由字符串组成的列表转换为字符串
>>> ''.join(h) 'hello'
元组 Tuple,只读列表
元组使用 () 定义,()中的元素使用逗号隔开。元组也可以通过索引和切片获取元素的值,方法和列表一样。
字典 Dictionary
字典是Python中唯一的映射类型,采用键值对的形式无序存储数据,键不可修改,且唯一;值可以修改。
创建方法:使用 {} 定义字典
>>> dic = {'name':'wt'}
>>> dic=dict((['name','wt'],['a','b'],))
对字典的值进行初始化:
>>> all_star = dict.fromkeys(['work','hobby'],'basketball')
>>> print(all_star)
{'work': 'basketball', 'hobby': 'basketball'}
字典也支持增删改查
增
- 例子
>>> dic1 = {'name':'wt'} >>> dic1['age'] = 21 >>> dic1 {'name': 'wt', 'age': 21}
改:这里介绍3种改的方式
- 例子
>>> dic1 {'name': 'wt', 'age': 21} #直接对键进行赋值,有则修改,没有就会创建 >>> dic1['name'] = 'Kobe' >>> dic1 {'name': 'Kobe', 'age': 21}
#使用内置的setdefault方法,如果键存在,不改动,返回字典中该键对应的值;如果不存在,增加新的键值对,并返回新增键值对值 >>> dic1.setdefault('age',22) 21 >>> dic1 {'name': 'Kobe', 'age': 21}
#update方法,当dic1字典中有就更新,没有则将dic2字典中的键值对添加到dic1中 >>> dic1 = {'name':'Kobe','age':21} >>> dic2 = {'name':'TMAC','hobby':'basketball'} >>> dic1.update(dic2) >>> dic1 {'name': 'TMAC', 'age': 21, 'hobby': 'basketball'}
查:
- 例子
>>> dic1 = {'name': 'TMAC', 'age': 21, 'hobby': 'basketball'} #获取指定键的值 >>> dic1['name'] 'TMAC'
#通过keys方法获取字典包含的键 >>> dic1.keys() dict_keys(['name', 'age', 'hobby'])
#通过values()方法获取字典的值 >>> dic1.values() dict_values(['TMAC', 21, 'basketball'])
#通过items()方法获取字典的所有键值对 >>> dic1.items() dict_items([('name', 'TMAC'), ('age', 21), ('hobby', 'basketball')])
删:
- 例子
>>> dic1 {'name': 'TMAC', 'age': 21, 'hobby': 'basketball'} #使用del命令删除指定键的值 >>> del dic1['hobby'] >>> dic1 {'name': 'TMAC', 'age': 21}
#clear()方法清空字典 >>> dic1.clear() >>> dic1 {}
#pop()方法删除指定键的值,并返回该值 >>> dic1 = {'name':'Kobe','age':21} >>> dic1.pop('name') 'Kobe' >>> dic1 {'age': 21}
#popitem()方法随机删除键值对,并返回删除的键值对 >>> dic1 = {'name':'Kobe','age':21} >>> dic1.popitem() ('age', 21)
字典嵌套:字典里可以包含字典、列表等。
books = { "日本作家" : { "村上春树":["且听风吟","没有女人的男人们","1Q84","多崎作"], "井上靖":["敦煌"], "东野圭吾":["白夜行","解忧杂货铺","放学后"] }, "欧美作家" : { "昆德拉":["庆祝无意义","不能承受生命之轻"], "菲茨杰拉德":["了不起的盖茨比"] }, "中国作家" : { "路遥":["平凡的世界","人生"], "金庸":["天龙八部","射雕英雄传","笑傲江湖"] } } >>> print(books['日本作家']['村上春树'][1]) 没有女人的男人们
字典的排序:字典默认根据键排序,列表根据值排序
>>> dic1 = {24:'Kobe',1:'TMAC',30:'Curry',23:'LBJ'} >>> dic1 {24: 'Kobe', 1: 'TMAC', 30: 'Curry', 23: 'LBJ'} #字典默认按键排序 >>> print(sorted(dic1.items())) [(1, 'TMAC'), (23, 'LBJ'), (24, 'Kobe'), (30, 'Curry')]
#按值排序 >>> print(sorted(dic1.values())) ['Curry', 'Kobe', 'LBJ', 'TMAC']
使用for循环,打印字典的键值
#打印键 >>> for i in dic1: ... print(i) ... 24 1 30 23
#打印键值 >>> for i in dic1: ... print(i,dic1[i]) ... 24 Kobe 1 TMAC 30 Curry 23 LBJ
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享标题:Python数据结构之列表元组字典的用法-创新互联
转载注明:http://pwwzsj.com/article/iihhj.html