[ Python入门教程 ] Python 数据结构基本操作
数据结构是用来存储数据的逻辑结构,合理使用数据结构才能编写出优秀的代码。本文主要介绍Python提供的几种内置数据结构,包括元组、列表、字典的定义和基本操作方法以及介绍典型函数的使用方法。
元组结构
元组由一系列元素组成,包含在一对圆括号中。元组创建后不可修改。创建元组方法如下:
tuple = () # 空元组 tuple = ('Python',) #单元素元组,后面必须包含一个逗号 tuple = ('Python', 'Java', 'Shell') #多元素元组 tuple = (('Python', 'Java'), 'Shell', ['C++', 'Ruby'], 20) #元组中的元素可以是不同类型的数据
元组的基本操作,详细介绍可以通过help(tuple)查看。
(1)通过下标访问指定元素值
tuple[0] #访问第一个元素,下标从0开始
(2)通过切片访问某段的值
tuple[1:3] #获取下标1和2的值,不包括下标3
(3)遍历访问元组中的所有元素
for i in range(len(tuple)): print "tuple[%d] = %s" % (i, tuple[i])
(4)元组的拆包赋值。可用于获取函数返回的多个值。
val1, val2, val3 = tuple #注意:变量个数要与元组中的元素个数一致。
列表结构
列表中是由一系列元素组成,包含一对方括号中。列表可以添加、删除、查找操作,元素值可修改。列表创建方法如下:
lst = [] # 空列表 lst = ['Python'] #单元素列表 lst = ['Python', 'Java', 'Shell'] #多元素元组 lst = [('Python', 'Java'), 'Shell', ['C++', 'Ruby'], 20] #列表中的元素可以是不同类型的数据
列表的基本操作方法,详细介绍可以通过help(list)查看。
lst.append(object) #在列表的末尾添加一个对象object lst.insert(index,object) #在指定的索引index处插入一个对象object lst.remove(value) #删除列表中首次出现的value值 lst.pop([index]) #删除索引index指定的值,如果不指定,删除列表中的最后一个元素 lst.extend(iterable) #将iterable指定的元素添加到列表末尾 lst.index(value, [start,[stop]]) #返回value出现在列表中的索引 lst.sort(cmp=None, key=None, reverse=False) #列表的排序 lst.reverse(...) # 列表的反转 value in lst #判断指定value是否存在于列表中 value not in lst #判断指定的vale是否不在列表中
列表的基本操作方法实例
>>> lst = ['1','2','3'] #初始化一个列表 >>> lst.append('4') #使用append()函数条件一个值 >>> lst ['1', '2', '3', '4'] >>> lst.insert(0,'0') #在指定位置0插入字符'0' >>> lst ['0', '1', '2', '3', '4'] >>> lst.remove('3') #删除列表中的字符'3' >>> lst ['0', '1', '2', '4'] >>> lst.pop() #将指定位置字符删除,默认是最后一个位置。 '4' >>> lst ['0', '1', '2'] >>> lst.extend(['3','4','5']) #合并列表 >>> lst ['0', '1', '2', '3', '4', '5'] >>> lst.index('3') 3 >>> lst.sort() #对列表lst进行排序,原地置换 >>> lst ['0', '1', '2', '3', '4', '5'] >>> lst.reverse() #对列表lst进行反转输出,原地置换 >>> lst ['5', '4', '3', '2', '1', '0'] >>> '3' in lst #判断指定字符'3' 是否在lst中,存在则返回True True >>> 3 in lst #3不存在lst中,返回False False >>> 3 not in lst #3不存在lst中,返回True True
sort()函数典型实例介绍
1、按照指定字段排序列表元素
>>> lst = ['192.168.0.1 Success','192.168.0.10 Fail','192.168.0.2 Success'] >>> lst.sort(key = lambda x:int(x.split(' ')[0].split('.')[3])) >>> print lst ['192.168.0.1 Success', '192.168.0.2 Success', '192.168.0.10 Fail']
字典结构
字典是Python中重要的数据类型,字典是由”键-值”对组成的集合,”键-值”对之间用逗号隔开,包含在一对花括号中。字典中的”值”通过”键”来引用。
(1)创建字典。创建字典的格式如下:
dictionary = {key1:value1, key2:value2, ...}
创建实例如下:
dict = {} #空字典 dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell')} #多元素字典 dict2 = {'lesson1': 'Python', lesson2': 'Java', 'lesson3': 'Shell')} #注意和dict1不同(lesson首字母小写),原因是字典中的键是区分大小写的
说明:字典的键是区分大小写的。
(2)字典的访问
访问字典中的元素有2种方法。第1种是通过key值获取相应的value值,第二种是通过字典函数get()来获取。
通过key值获取相应的value值。语法格式为:value = dict[key]。具体实例如下:
>>> dict1 = {'Lesson1': 'Python'} >>> dict1['Lesson1'] 'Python' >>> dict1['Lesson2'] #不存在对应的键值,返回KeyError报错 Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'Lesson2'
通过get()函数获取value值,get()函数使用格式如下:
dict.get(key[,default_value])
说明:参数key表示字典的键值,参数default_value可以作为get()的返回值,默认值为None。如果指定default_value参数值,表示如果参数key键值唉字典key列表中,则返回对应的value值,如果不在,则返回预先设定的default_value的值。具体实例如下所示:
>>> dict1 = {'Lesson1': 'Python'} >>> dict1.get('Lesson1') 'Python' >>> dict1.get('Lesson2') >>> dict1.get('Lesson2','Perl') 'Perl'
(3)字典元素的添加。
方法一:直接添加方法,使用格式如下:
dict[key] = value
如果键值key不在字典dict的key列表中,字典dict添加(key:value)的记录。如果已经在key列表中,则修改键值key对应的value值。
dict['Lesson3'] = 'Perl'
举个例子,假设字典dict中不存在键名为Lesson3的字符串,则直接添加。如果已存在,则刷新值为Perl字符串。实例如下:
>>> dict1 = {'Lesson1': 'Python'} >>> dict1['Lesson3'] = 'Perl' >>> dict1 {'Lesson3': 'Perl', 'Lesson1': 'Python'} >>> dict1 = {'Lesson3': 'Python'} >>> dict1['Lesson3'] = 'Perl' >>> dict1 {'Lesson3': 'Perl'}
方法二:通过调用setdefault()函数方法实现。格式如下:
dict.setdefault(key[,default_value])
如果索引key在字典key列表中,则返回对应的value值,如果不在key列表中,则添加新索引key和value在字典中,并反馈default_value值,默认值 为None。使用实例如下:
>>> dict1 = {'Lesson1': 'Python'} >>> dict1.setdefault('Lesson1') 'Python' >>> dict1.setdefault('Lesson2') >>> dict1 {'Lesson2': None, 'Lesson1': 'Python'} >>> dict1.setdefault('Lesson3','Shell') 'Shell' >>> dict1 {'Lesson3': 'Shell', 'Lesson2': None, 'Lesson1': 'Python'}
(4)获取字典的所有”键”-“值”元素。通过调用字典的items()方法实现,返回的是(key,value)元组组成的列表。实例如下:
>>> dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell'} >>> dict1.items() [('Lesson3', 'Shell'), ('Lesson2', 'Java'), ('Lesson1', 'Python')]
(5)获取字典的中key组成的列表。通过调用字典的keys()方法实现。实例如下:
>>> dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell'} >>> dict1.keys() ['Lesson3', 'Lesson2', 'Lesson1']
(6)获取字典的中value组成的列表。通过调用字典的values()方法实现。实例如下:
>>> dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell'} >>> dict1.values() ['Shell', 'Java', 'Python']
(7)判断字典中是否存在键值为k的元素。通过调用字典has_key()方法实现。实例如下:
>>> dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell'} >>> dict1.has_key('Lesson1') True >>> dict1.has_key('Lesson4') False
(8)删除字典元素。
方法一:通过调用内置函数del实现。实例如下:
>>> dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell'} >>> del dict1['Lesson1'] >>> dict1 {'Lesson3': 'Shell', 'Lesson2': 'Java'}
方法二:通过调用字典的pop()函数实现。pop()函数格式如下:
dict.pop(key[,default_value])
pop()函数必须指定参数索引key才能删除对应的值。如果索引key在字典key列表中,则返回索引key对应的value值。如果不存在,则返回预先设置的default_value值,如果未设置,会爬出KeyError异常信息。实例如下:
>>> dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell'} >>> dict1.pop('Lesson3') 'Shell' >>> dict1 {'Lesson2': 'Java', 'Lesson1': 'Python'} >>> dict1.pop('Lesson3','Perl') 'Perl'
方法三:调用字典的clear()函数,清除字典的所有内容。实例如下:
>>> dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell'} >>> dict1.clear() >>> dict1 {}
(9)字典排序
字典的排序可以通过使用sorted()函数实现,实例如下:
>>> dict = {'2':"Python",'1':"Java",'3':"C++"} >>> sorted(dict.items(),key=lambda d:d[0]) [('1', 'Java'), ('2', 'Python'), ('3', 'C++')] >>> sorted(dict.items(),key=lambda d:d[1]) [('3', 'C++'), ('1', 'Java'), ('2', 'Python')]
原文地址:https://www.cnblogs.com/linyfeng/p/8481766.html
相关推荐
-
Python之多线程爬虫抓取网页图片 python基础
2020-5-31
-
从零实现DNN 探究梯度下降的原理 python基础
2019-6-10
-
一键分析你的上网行为, 看看你平时上网都在干嘛? python基础
2019-8-16
-
图像处理?没有Python可不行 python基础
2018-2-3
-
基于微博数据用 Python 打造一颗“心” python基础
2020-5-31
-
leetcode 第 176 场周赛 – 代码和解释 – python python基础
2020-6-17
-
知道数据库优化 走到哪里都不怕 python基础
2019-10-10
-
KNN算法填坑 python基础
2020-5-31
-
Python档案袋(异常与异常捕获 ) python基础
2019-4-2
-
爬虫实战之Scrapy模拟登陆 python基础
2020-6-17