[ Python入门教程 ] Python 数据结构基本操作

python基础

浏览数:208

2019-9-16

    数据结构是用来存储数据的逻辑结构,合理使用数据结构才能编写出优秀的代码。本文主要介绍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')]

 

作者:Beng Dou