• python学习笔记五——数据结构


    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 9.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 9.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[0][1] = banana
    tuple[1][1] = 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[0]:
    apple
    banana
    
    tuple[1]:
    grape
    orange
    
    tuple[2]:
    watermelon
    
    tuple[3]:
    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[0]:
    apple
    banana
    
    list[1]:
    grape
    orange
    
    list[2]:
    watermelon
    
    list[3]:
    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']
  • 相关阅读:
    vscode写python时的代码错误提醒和自动格式化
    Python使用requests发送post请求的三种方式
    unittest参数化(paramunittest)
    pycharm快捷键及一些常用设置
    Navicat破解
    Python3 os.path() 模块笔记
    Python使用SMTP模块、email模块发送邮件
    五笔字典86版wubi拆字图编码查询
    根据字符串从资源中取出对应的资源ResourceManager.GetObject
    判断字符串是否是由相同的字符组成
  • 原文地址:https://www.cnblogs.com/dannylinux/p/8203682.html
Copyright © 2020-2023  润新知