4 . python的数据结构

  数据结构是用来存储数据的逻辑结构,合理使用数据结构才能编写出优秀的代码。python提供的几种内置数据结构——元组、列表、字典和序列。内置数据结构是Python语言的精华,也是使用python进行开发的基础。

4.1 元组结构

  元组是Python中常用的一种数据结构。元组由不同的元素组成,每个元素可以存储不同类型的数据,如字符串、数字甚至元组。元组是“写保护”的,即元组创建后不能再做任何修改操作,元组通常代表一行数据,而元组中的元素代表不同的数据项。

4.1.1 元组的创建

  tuple(元组)是python内置的一种数据结构。元组由一系列元素组成,所有元素被包含在一对圆括号中。创建元组时,可以不指定元素的个数,相当于不定长的数组,但是一旦创建后就不能修改元组的长度。元组创建的格式如下所示:

tuple = (元素1,元素2,...)

  元组的初始化示例如下:

tuple = ("apple" , "banana" , "grape" , "orange")

  上面这行代码创建了一个名为tuple的元组,该元组由4个元素组成,元素之间使用逗号分隔。如果需要定义一个空的元组,表达方式更简单。创建空的元组只需要一对空的圆括号。如:

tuple = ()

  如果创建的元组只包含一个元素,通常会错误地忽略单元素后的逗号。这样,python无法区分变量tuple是元组还是表达式,python误认为圆括号中的内容为表达式,因此tuple[0]输出的结果并非期望的值,并且其类型也不是tuple。正确的写法如下:

tuple = ["apple" , ]   #定义元组,注意后面的逗号不可少
print (tuple[0]) #打印第一个元素
print (type(tuple)) #打印定义的tuple的类型
[root@Dannyserver danny]# python .py
apple
<class 'list'>

  元组是从0开始计数的,因此tuple[0]获得的是元组tuple中第1个元素。python中其他的数据结构也遵循这个规则。

4.1.2 元组的访问

访问格式:tuple[n]   ,n可以是0、正负整数。

输出:print (tuple[n])

可以把元组理解为C或者Java中的数组。

注意:元组创建后其内部元素的值不能被修改。元组中的元素不支持赋值操作。

提示:元组不能添加或删除任何元素。因此,元组不存在任何添加、删除元素的方法,元组也不存在任何其他方法。

  元组的访问还有一些特殊的用法,例如负数索引和分片索引。这两个特性是python的特殊用法,C或者Java语言并不支持。负数索引从元组的尾部开始计数,最尾端的元素索引表示“-1”,次尾端的元素索引表示“-2”,以此类推。

  分片是元组的一个子集,分片是从第1个索引到第2个索引(不包含第2个索引所指向的元素)所指定的所有元素。分片索引可以为正数或负数,两个索引之间用冒号分隔。分片的格式如下:

tuple[m:n]     其中m、n可以是0、正整数或负整数。

例:

tuple=("apple","banana","grape","orange") #定义元组
print (tuple[-1])
print (tuple[-2])
tuple2 = tuple[1:3] #分片,第二个元素到第三个元素(不包括第四个)
tuple3 = tuple[0:-2] #分片,从第一个元素到倒数第二个元素(不包括倒数第二个)
tuple4 = tuple[2:-1] #分片,从第三个元素到倒数第一个元素(不包括倒数第一个)
print (tuple2)
print (tuple3)
print (tuple4)
[root@Dannyserver danny]# python .py
orange
grape
('banana', 'grape')
('apple', 'banana')
('grape',)

  元组还可以由其他元组组成。例如,二元元组可以表示为:

tuple = (('t1' , 't2'), ('t3' , 't4'))

该元组是一个二元元组,该元组由('t1' , 't2')和('t3' , 't4')组成。

例:

fruit1 = ("apple", "banana")
fruit2 = ("grape", "orange")
tuple = (fruit1, fruit2)
print (tuple)
print ("tuple[0][1] =", tuple[0][1]) #打印输出第一个元组的第二个元素
print ("tuple[1][1] =", tuple[1][1])  #打印输出第二个元组的第二个元素
[root@Dannyserver danny]# python a.py
(('apple', 'banana'), ('grape', 'orange'))
tuple[][] = banana
tuple[][] = orange

  创建元组的过程,python称为“打包”。相反,元组也可以执行“解包”的操作。“解包”可以将打包元组中的各个元素分别赋值给多个变量,降低了代码的复杂性,使表达方式更自然。“打包”和“解包”例:

#打包
tuple = ("apple", "banana", "grape", "orange")
#解包
a, b, c, d = tuple #将元组中的元素分别赋值给a,b,c,d
print(a,b,c,d)
[root@Dannyserver danny]# python a.py
apple banana grape orange

4.1.3 元组的遍历

  元组的遍历是指通过循环语句依次访问元组中各元素的值。遍历元组需要用到两个函数range()和len()。range()和len()都是python的内建函数,这些函数可直接调用,不需要import语句导入模块。内建函数是Python自动导入的函数,相当与Java中的lang包。

  len()计算出tuple元组中元素的个数,range()返回一个由数字组成的列表。

例:

tuple = (("apple","banana"),("grape","orange"),("watermelon", ),("grapefruit", ))
for i in range(len(tuple)):
print("tuple[%d]:" %i)
for j in range(len(tuple[i])):
print(tuple[i][j])
print()
[root@Dannyserver danny]# python a.py
tuple[]:
apple
banana tuple[]:
grape
orange tuple[]:
watermelon tuple[]:
grapefruit

  也可以用for实现遍历元组

tuple = (("apple","banana"),("grape","orange"),("watermelon", ),("grapefruit", ))  #定义一个二元元组
for i in tuple:
for j in i:
print(j)
[root@Dannyserver danny]# python a.py
apple
banana
grape
orange
watermelon
grapefruit

4.2 列表结构

  列表是Python中非常重要的数据类型,通常作为函数的返回类型。列表和元组相似,也是由一组元组组成,列表可以实现添加、删除和查找操作,元素的值可以被修改。

4.2.1 列表的创建

  List(列表)是Python内置的一种数据结构。它由一系列元素组成,所有元素被包含在一对方括号中。列表创建后,可以执行添加或删除操作。格式如下:

list = [元素1, 元素2, ...]
列表的添加可以调用append(),该方法的声明如下所示。

append(object)

其中,object可以是元组、列表、字典或任何对象。

列表的删除可以调用remove(),该方法的声明如下所示。

remove(value)

该方法也可删除元素value。如果value不在列表中,python将抛出异常。

list = ["apple","banana","grape","orange"] #定义列表
print(list)
print(list[2])
list.append("watermelon") #在列表末尾添加元素
list.insert(1,"grapefruit") #向列表中插入元素
print(list)
list.remove("grape") #从列表中移除grape
print(list)
print(list.pop()) #打印从列表中弹出的元素,即最后一个元素。pop()表示取出最后一个元素
print(list)
[root@Dannyserver danny]# python b.py
['apple', 'banana', 'grape', 'orange']
grape
['apple', 'grapefruit', 'banana', 'grape', 'orange', 'watermelon']
['apple', 'grapefruit', 'banana', 'orange', 'watermelon']
watermelon
['apple', 'grapefruit', 'banana', 'orange']

注意:如果list列表中存在两个相同的元素,此时调用remove()移除同名元素,将只删除List列表中靠前的元素。

4.2.2 列表的使用

  列表的使用与元组十分相似,同样支持负数索引、分片以及多远列表等特性,但是列表中的元素可修改,而且存在一些处理列表的方法。

list = ["apple","banana","grape","orange"] #定义列表
print(list[-2])
print(list[1:3])
print(list[-3:-1])
list = [["apple","banana"],["grape","orange"],["watermelon"],["grapefruit"]]
for i in range(len(list)):
print("list[%d]:" %i)
for j in range(len(list[i])):
print(list[i][j])
print()
[root@Dannyserver danny]# python b.py
grape
['banana', 'grape']
['banana', 'grape']
list[]:
apple
banana list[]:
grape
orange list[]:
watermelon list[]:
grapefruit

  列表实现了连接操作的功能,列表的连接同样提供了两种方式,一种是调用extend()连接两个不同的列表,另一种是使用运算符“+”或“+=”。

list1=["apple","banana"]
list2=["grape","orange"]
list1.extend(list2) #list1连接list2
print(list1)
list3=["watermelon"]
list1=list1+list3 #将list1与list3连接后赋给list1
print(list1)
list1+=["grapefruit"] #使用+=给list1连接上["grapefruit"]
print(list1)
list1=["apple","banana"]*2 #连接两个相同的列表
print(list1)
[root@Dannyserver danny]# python c.py
['apple', 'banana', 'grape', 'orange']
['apple', 'banana', 'grape', 'orange', 'watermelon']
['apple', 'banana', 'grape', 'orange', 'watermelon', 'grapefruit']
['apple', 'banana', 'apple', 'banana']

python学习笔记五——数据结构的更多相关文章

  1. Python学习笔记系列——数据结构相关

    Python有4种数据结构:列表(list).字典(dictionary).元组(Tuple).集合(set).从最直接的感官上来说,这四种数据结构的区别是:列表中的元素使用方括号括起来,字典和集合是 ...

  2. python学习笔记五 模块上(基础篇)

    模块学习 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要 ...

  3. Python学习笔记五

    一. 递归 递归函数: def a (): print ("from b") b() def b(): print("from a ") a() a() 递推和 ...

  4. Python学习笔记五:错误与异常

    一:常见异常与错误 BaseException 所有异常的基类SystemExit 解释器请求退出KeyboardInterrupt 用户中断执行(通常是输入^C)Exception 常规错误的基类S ...

  5. python学习笔记(五):装饰器、生成器、内置函数、json

    一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如说,我以前写了很多代码,系统已经上线了,但是性能比较不好,现在想把程序里 ...

  6. Python学习笔记——基本数据结构

    列表list List是python的一个内置动态数组对象,它的基本使用方式如下: shoplist = ['apple', 'mango', 'carrot', 'banana'] print 'I ...

  7. Python学习笔记(3)--数据结构之列表list

    Python的数据结构有三种:列表.元组和字典 列表(list) 定义:list是处理一组有序项目的数据结构,是可变的数据结构. 初始化:[], [1, 3, 7], ['a', 'c'], [1, ...

  8. Python学习笔记五(读取提取写入文件)

    #Python打开读取一个文件内容,然后写入一个新的文件中,并对某些字段进行提取,写入新的字段的脚本,与大家共同学习. import os import re def get_filelist(dir ...

  9. Python学习笔记(五)函数和代码复用

    函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Python提供了许多内建函数,比如print().同样,你也可以自己创建函数, ...

随机推荐

  1. Linux系统学习之文件管理

    Linux目录分布通常是树形,所以它的结构又称为目录树. 一.文件和目录管理 [root@Cfhost-170820-UCNK /]# cd / [root@Cfhost-170820-UCNK /] ...

  2. Python排序算法——希尔排序(Shell’s Sort)

    有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10793487.html 一.希尔排序(Shel ...

  3. 人人都是产品经理<2.0>

    之前有看过<人人都是产品经理1.0>,还认真的做了笔记,看完后不久,得知作者在第一版的内容基础上,升华性的出了第二版,即<人人都是产品经理2.0>.注:第一版和第二版跨度有6年 ...

  4. saltstack学习之一:服务架构以及相关配置安装运行

    概要 saltstack是基于Python开发的C/S架构的一款批量管理工具,底层采用动态的连接总线(ZeroMQ消息队列pub/sub方式通信),使用ssl证书签发的方式进行认证管理,使其可以用于编 ...

  5. IIS导入.pfx证书时报错:"A specified logon session does not exist. It may already have been terminated."

    在IIS中可以直接导入.pfx文件来给站点绑定https协议: 如果在导入.pfx文件时,不选择"Allow this certificate to be exported"的话 ...

  6. BootStrap学习(7)_轮播图

    一.轮播图 Bootstrap 轮播(Carousel)插件是一种灵活的响应式的向站点添加滑块的方式.除此之外,内容也是足够灵活的,可以是图像.内嵌框架.视频或者其他您想要放置的任何类型的内容. 如果 ...

  7. C# LINQ 详解 From Where Select Group Into OrderBy Let Join

    目录 1. 概述 2. from子句 3. where子句 4. select子句 5. group子句 6. into子句 7. 排序子句 8. let子句 9. join子句 10. 小结 1. ...

  8. [React]全自动数据表格组件——BodeGrid

    表格是在后台管理系统中用的最频繁的组件之一,相关的功能有数据的新增和编辑.查询.排序.分页.自定义显示以及一些操作按钮.我们逐一深入进行探讨以及介绍我的设计思路:   新增和编辑 想想我们最开始写新增 ...

  9. 闭包----你所不知道的JavaScript系列(4)

    一.闭包是什么? · 闭包就是可以使得函数外部的对象能够获取函数内部的信息. · 闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. · 闭包就 ...

  10. .Net Core Cookie-Based认证与授权

    .Net Core的其中一种认证与授权模式是基于Cookie的,首先我们先创建一个.Net Core MVC 项目: 然后增加对页面访问的权限控制,对要访问的页面Conytroller增加Author ...