zoukankan      html  css  js  c++  java
  • python列表及元组的基本知识

                                              列表和元组

    在本章中将会引入一个新的概念-----数据结构。数据结构呢就是通过某种方式(如对元素进行编号)组织在一起的数据元素的集合。这些元素可以是数字也可以是字符。

    然而,在python中,最基本的数据结构就是序列。python包含6种内建序列,即列表,元组,字符串,Unicode字符串,buffer对象,xrange对象。

    本章呢我们就先来讨论一下最常用的两种-----列表和元组。其他四种将会在近期为大家呈现,敬请期待!

    在了解列表和元组之前呢,我们先来简单的了解一下序列的基本操作:索引,分片,序列相加,乘法,成员资格,长度,最小值,最大值 8种。这8种操作无论是在列表,元组还是其他几种内建序列中都可用。

                                                 序列:

    1,索引:所谓索引简单的来说就是序列中的位置

    eg:》name="Marie Dalgar"#定义变量name,并赋值

        》print name[1]      #根据编号取元素,使用格式:在括号中输入所取元素的编号值(注意python中元素下标也是从0始)

          M

             》print name[-1]     #当括号中输入负数时,得到的值就会是倒是第一个元素(这叫做负数索引,不言而喻,上一种即正       r                  #数索引)

     

    2,分片:索引用来对单个元素进行访问,那么分片就是通过冒号来对一段元素进行访问

    eg:》number="Marie Dalgar"

        》print number[1:3]   #括号中所取得元素包前不包后,即会输出下标为1的元素和下标为2的元素,但不会输出下标为3的       ar                  #元素

        》print number[-3:-1] #括号内输入负数时即取从下标倒数第三个元素到倒数第二个,但因为所取元素包前不包后怎么办?

          ga

        》print number[-3:] #从下标倒数第三个开始取直到最后一个,那么正数索引是否也可以这样呢?让我们来试试吧!

          gar  

        》print number[3:]  #从下标为3开始知道最后一个元素

         ie Dalgar

        》print number[:4]  #从第一个开始到下标为4的元素

         Mari

     

    3,序列相加:使用加号可以将系列连接起来

    eg:》name1="Marie"

        》name2="Dalgar"

        》print name1+name2   #加号就可将两个变量连接起来

         MarieDalgar

     

    4,乘法:这里的乘法不是数学中的乘法,而是使用“*”符号来代表乘一个数字num,表示将这一变量输出num次

    eg:》H="hello "

        》print H*3    # *3即输出三次

         hello hello hello

     

    5,成员资格:即用in判断某个元素是否存在于变量中

    eg:》name="Marie"

        》print "M" in name   #判断"M"元素是否存在于name变量中(返回值为bool类型)

          True

     

    6,长度(变量的长度),最小值,最大值

    eg:》number=[300,200,100,800,500]

        》print len(number)#用方法len(变量名)得到变量的长度

          5

        》print min(number)#用方法min(变量名)得到变量中的最小值

          200

        》print miax(number)#用方法max(变量名)得到变量中的最大值

          800

     

    好了,讲了这么多序列的基本操作,都是为了给本章的主角列表,元组打基础,做准备,那么我们现在进入主题吧!

                                              列表:

    1,声明列表:
    a,列表的定义:其实在上面介绍序列的最值时就有牵涉到列表的声明,这个列表呢就相当于一个数组,用来存储数据,容纳数据。
    b,列表的声明:列表名=[值1,值2,值3......] eg:num=[1,2,3,4]
    2,列表的操作
    a,元素赋值

    eg:>>>num=[1,2,3,4]
    >>>num[1]=9
    >>>print num
    [1,9,3,4]
    注意:这里的赋值只能是同一类型才可以赋值

    b,元素的增加
    这里元素的添加需要用到一个方法----append()
    eg:>>>num=[1,2,3,4]
    >>>num.append(5)
    >>>print num
    [1,2,3,4,5]

    c,元素的删除
    del 列表名[元素下标]
    eg:>>>num=[1,2,3,4]
    >>>print len(num)
    4
    >>>del num[1]
    >>>print ("删除num[1]后:",num)
    >>>print len(num)
    删除num[1]后:[1,3,4]
    3
    注意:这里删除元素时不仅删除了元素而且还减少了列表的长度

    d,分片赋值
    分片赋值就是将一个str类型的列表每个字符拆分开来
    eg:
    >>>bo=list('女排得冠军了!')
    >>>print bo
    ['女','排','得','冠','军','了']

    >>>print bo[3:]=('man')
    ['女','排','得','m','a','n']

     

    e,嵌套列表
    eg:>>>num=[1,2,3]
    >>>name=['luoruo','jila','jake']
    >>>um=[num,name]
    >>>um
    [[1,2,3],['luoruo','jila','jake']]
    >>>um[0]
    [1,2,3]
    >>>um[1]
    ['luoruo','jila','jake']

     

    3,列表的方法
    1)append()---添加元素(上面详细的列举过例子,这里就不解释)
    2)count()----用于计算某一元素的个数
    eg:>>>name=['angla','luoruo','angla']
    >>>print name.count('angla')
    2
    3)extend()---用于序列后追加另一个序列中的全部值
    eg:>>>name=['angla','luoruo','angla']
    >>>sum=[1,4,3]
    >>>name.extend(sum)
    >>>print name
    ['angla','luoruo','angla',1,4,3]
    注意:这种方法看似与序列相加结果没有什么区别,但!!!
    当使用序列相加时,输出name时结果并没有改变
    >>>name=['angla','luoruo','angla']
    >>>sum=[1,4,3]
    >>>name+sum
    >>>print name
    ['angla','luoruo','angla'] 
    当使用extend()方法时,输出的结果则变成了两序列相加后的结果
    >>>name.extend(sum)
    >>>print name
    ['angla','luoruo','angla',1,4,3]

     

    4)index()---用于获取元素的下标
    eg:
    >>>num=[1,2,3,4]
    >>>print num.index(1)
    0
    注意:这里的index()方法只能用于元素存在的情况下,如果查询的元素不存在就会报错

     

    5)insert()---用于将对象插入列表
    eg:
    >>>name=['angla','luoruo','zhangsna']
    >>>name.insert(2,'lisi')
    >>>print name
    ['angla','luoruo','lisi','zhangsna']

     

    6)pop()---用于移除列表中的某个元素(利用元素下标移除)
    eg:>>>name=['angla','luoruo','zhangsna']
    >>>name.pop()
    >>>print name
    ['angla','luoruo']
    当pop()方法括号内没有添加元素下标时,则是删除了列表的最后一个下标的元素
    >>>name.pop(0)
    >>>print name
    ['luoruo','zhangsna']
    当pop()方法括号内有元素下标时则删除指定的下标的元素 
    注意:
    pop()方法的移除实现规则其实与栈的出栈是一样的,移除时从最后一个元素开始

    7)remove()----用于移除列表中的某个元素(利用元素的元素值匹配项来删除)
    eg:>>>name=['angla','luoruo','zhangsna']
    >>>name.remove('angla')
    >>>print name
    ['luoruo','zhangsan']

     

    8)reverse()---用于列表的反转
    eg:>>>num=[1,2,3]
    >>>num.reverse()
    >>>print num
    [3,2,1]
    注意:这里的reverse()方法的使用不需要传入参数即可达到预想的效果

     

    扩展:如果需要对一个列表进行反向迭代,那么可以使用reversed()函数,
    但是这个函数并不返回列表,而是返回一个迭代器对象,可以通过list()函数把返回的对象转换为列表
    eg:>>>num=[1,2,3]
    >>>print list(reversed(num))
    [3,2,1]

    9)sort()---用于对序列进行排序,该方法可传入参数(使用参数指定的方法进行排序)也可不传(按照升序的规则进行排序)
    eg:>>>num=[5,9,7,3,1]
    >>>num.sort()
    >>>print num
    [1,3,5,7,9]

    10)clear()---用于对序列进行删除,清理.
    eg:>>>num=[1,2,3,4]
    >>>print num
    [1,2,3,4]
    >>>num.clear()
    >>>print num
    []
    注意:clear()方法的清理会删除整个列表,所以在使用clear()方法时需要小心

     

    11)copy()---用于复制序列
    eg:>>>num=[1,2,3]
    >>>copynum=num.copy()
    >>>print copynum
    [1,2,3]
    该方法与其原本的意思一样,就是原原本本的将列表拷贝下来

     

    12)高级排序---就是利用前面所说的sort()方法的基础上在括号里添加参数key和reverse,我们称这两个参数为关键字参数.
    eg:>>>field=['study','python','is','happy']
    >>>field.sort(key=len) #按字符串由短到长排序
    >>>print field
    ['python','study','happy','is']
    >>>field.sort(key=len,reverse=True) #按字符串由长到短的循序排列,需要传入两个参数
    >>>print field
    ['is','study','happy','python']
    >>>field.sort(reverse=True)
    >>>print field
    ['is','happy','study','python']

     

    好!现在说到这里呢!我们的列表基础知识就差不多讲解完了,接下来呢,我们就进入元组基础知识的讲解

                                               元组:

    元组是python的一个新的概念,主要是存放一组不可更改的序列,就以为只能查找,不能增删改,删只能全部删除,那么元组一般用来保存一组给用户查询的数据。一般存放坐标,物品信息,不经常修改的数据,比如返回值

     

    1,语法:

    元组名 = (元素1,元素2) 或者 元素1,元素2   (没打括号也认为是元组)

     

    2,获取元素:

    元组名[下标]

     

    3,tuple函数---用于将列表转变为元组(如果加入的参数为元组,那么参数就会被原样返回)
    eg:>>>print tuple(['hello','world'])
    ('hello','world')
    >>>print tuple(('hello','world'))
    ('hello','world')


    4,元组的基本操作
    1) 访问元组---可以利用下标索引来访问元组中的值
    eg:>>>mix=('hello','world',2015,2016)
    >>>print mix[1]
    world
    >>>min=(1,2,3,4,5)
    >>>print min[0:3]
    1,2,3 
    2)修改元组---元组不可以修改元组值,但可以对元组进行连接组合
    eg:>>>string=('hello','world')
    >>>num=(2015,2016)
    >>>print string+num
    ('hello','world',2015,2016)
    3)删除元组---元组中的元素值是不能被删除的,但可以使用del语句删除整个元组
    eg:>>>string=('hello','world')
    >>>del string
    >>>print string
    Traceback(most recent call last):
    注意:以上例子的元组被删除后,输出变量会有异常信息,输出结果告诉我们string没有定义,即元组不存在
    4)元组索引,截取
    因为元组也是一个序列,所以可以访问元组中指定位置的元素,也可以截取索引中的一段元素
    eg:>>>name=('hello','world','welcome')
    >>>print name[1]
    'world'
    >>>print name[1:]
    ('world','welcome')


    5,元组的内置函数
    1)len()方法---用于计算元组的长度
    eg:>>>name=('lisi','zhangsan','wangwu')
    >>>print len(name)
    3
    2)max()方法---用于返回元组中最大的元素
    eg:>>>name=('lisi','zhangsan','wangwu')
    >>>print max(name)
    'zhangsan'
    3)min()方法---用于返回元组中最小的元素
    eg:>>>name=('lisi','zhangsan','wangwu')
    >>>print min(name)
    'lisi'

                                              元组 和 列表的区别:

    区别就在于元组的元素不能修改而列表的元素可以修改

     

     

     

     

     

     

     

     

     

     

    上次我们讲到了序列的概念和序列的基本操作,那么接下来我们就进入主题-----列表

    列表
    1,声明列表:
    a,列表的定义:其实在上面介绍序列的最值时就有牵涉到列表的声明,这个列表呢就相当于一个数组,用来存储数据,容纳数据。
    b,列表的声明:列表名=[值1,值2,值3......] eg:num=[1,2,3,4]
    2,列表的操作
    a,元素赋值

     

    eg:>>>num=[1,2,3,4]
    >>>num[1]=9
    >>>print num
    [1,9,3,4]
    注意:这里的赋值只能是同一类型才可以赋值

    b,元素的增加
    这里元素的添加需要用到一个方法----append()
    eg:>>>num=[1,2,3,4]
    >>>num.append(5)
    >>>print num
    [1,2,3,4,5]

    c,元素的删除
    del 列表名[元素下标]
    eg:>>>num=[1,2,3,4]
    >>>print len(num)
    4
    >>>del num[1]
    >>>print ("删除num[1]后:",num)
    >>>print len(num)
    删除num[1]后:[1,3,4]
    3
    注意:这里删除元素时不仅删除了元素而且还减少了列表的长度

    d,分片赋值
    分片赋值就是将一个str类型的列表每个字符拆分开来
    eg:
    >>>bo=list('女排得冠军了!')
    >>>print bo
    ['女','排','得','冠','军','了']

    >>>print bo[3:]=('man')
    ['女','排','得','m','a','n']

     

    e,嵌套列表
    eg:>>>num=[1,2,3]
    >>>name=['luoruo','jila','jake']
    >>>um=[num,name]
    >>>um
    [[1,2,3],['luoruo','jila','jake']]
    >>>um[0]
    [1,2,3]
    >>>um[1]
    ['luoruo','jila','jake']

     

    3,列表的方法
    1)append()---添加元素(上面详细的列举过例子,这里就不解释)
    2)count()----用于计算某一元素的个数
    eg:>>>name=['angla','luoruo','angla']
    >>>print name.count('angla')
    2
    3)extend()---用于序列后追加另一个序列中的全部值
    eg:>>>name=['angla','luoruo','angla']
    >>>sum=[1,4,3]
    >>>name.extend(sum)
    >>>print name
    ['angla','luoruo','angla',1,4,3]
    注意:这种方法看似与序列相加结果没有什么区别,但!!!
    当使用序列相加时,输出name时结果并没有改变
    >>>name=['angla','luoruo','angla']
    >>>sum=[1,4,3]
    >>>name+sum
    >>>print name
    ['angla','luoruo','angla']
    当使用extend()方法时,输出的结果则变成了两序列相加后的结果
    >>>name.extend(sum)
    >>>print name
    ['angla','luoruo','angla',1,4,3]

     

    4)index()---用于获取元素的下标
    eg:
    >>>num=[1,2,3,4]
    >>>print num.index(1)
    0
    注意:这里的index()方法只能用于元素存在的情况下,如果查询的元素不存在就会报错

     

    5)insert()---用于将对象插入列表
    eg:
    >>>name=['angla','luoruo','zhangsna']
    >>>name.insert(2,'lisi')
    >>>print name
    ['angla','luoruo','lisi','zhangsna']

     

    6)pop()---用于移除列表中的某个元素(利用元素下标移除)
    eg:>>>name=['angla','luoruo','zhangsna']
    >>>name.pop()
    >>>print name
    ['angla','luoruo']
    当pop()方法括号内没有添加元素下标时,则是删除了列表的最后一个下标的元素
    >>>name.pop(0)
    >>>print name
    ['luoruo','zhangsna']
    当pop()方法括号内有元素下标时则删除指定的下标的元素
    注意:
    pop()方法的移除实现规则其实与栈的出栈是一样的,移除时从最后一个元素开始

    7)remove()----用于移除列表中的某个元素(利用元素的元素值匹配项来删除)
    eg:>>>name=['angla','luoruo','zhangsna']
    >>>name.remove('angla')
    >>>print name
    ['luoruo','zhangsan']

     

    8)reverse()---用于列表的反转
    eg:>>>num=[1,2,3]
    >>>num.reverse()
    >>>print num
    [3,2,1]
    注意:这里的reverse()方法的使用不需要传入参数即可达到预想的效果

     

    扩展:如果需要对一个列表进行反向迭代,那么可以使用reversed()函数,
    但是这个函数并不返回列表,而是返回一个迭代器对象,可以通过list()函数把返回的对象转换为列表
    eg:>>>num=[1,2,3]
    >>>print list(reversed(num))
    [3,2,1]

    9)sort()---用于对序列进行排序,该方法可传入参数(使用参数指定的方法进行排序)也可不传(按照升序的规则进行排序)
    eg:>>>num=[5,9,7,3,1]
    >>>num.sort()
    >>>print num
    [1,3,5,7,9]

    10)clear()---用于对序列进行删除,清理.
    eg:>>>num=[1,2,3,4]
    >>>print num
    [1,2,3,4]
    >>>num.clear()
    >>>print num
    []
    注意:clear()方法的清理会删除整个列表,所以在使用clear()方法时需要小心

     

    11)copy()---用于复制序列
    eg:>>>num=[1,2,3]
    >>>copynum=num.copy()
    >>>print copynum
    [1,2,3]
    该方法与其原本的意思一样,就是原原本本的将列表拷贝下来

     

    12)高级排序---就是利用前面所说的sort()方法的基础上在括号里添加参数key和reverse,我们称这两个参数为关键字参数.
    eg:>>>field=['study','python','is','happy']
    >>>field.sort(key=len) #按字符串由短到长排序
    >>>print field
    ['python','study','happy','is']
    >>>field.sort(key=len,reverse=True) #按字符串由长到短的循序排列,需要传入两个参数
    >>>print field
    ['is','study','happy','python']
    >>>field.sort(reverse=True)
    >>>print field
    ['is','happy','study','python']

     

    好!现在说到这里呢!我们的列表基础知识就差不多讲解完了,接下来呢,我们就进入元组基础知识的讲解

    元组
    1,元组定义:Python的元组与列表类似,不同之处是元组的元素是不可修改的(字符串也是不能修改的)
    2,元组的声明:声明元组的方法很简单,只要使用逗号分隔一些值就可以自动创建元组
    eg:>>>print 1,2,3
    (1,2,3)
    >>>print (1,2,3) #也可以直接创建一个元组
    (1,2,3)
    >>>print () #也允许创建空的元组
    ()
    3,tuple函数---用于将列表转变为元组(如果加入的参数为元组,那么参数就会被原样返回)
    eg:>>>print tuple(['hello','world'])
    ('hello','world')
    >>>print tuple(('hello','world'))
    ('hello','world')
    4,元组的基本操作
    1) 访问元组---可以利用下标索引来访问元组中的值
    eg:>>>mix=('hello','world',2015,2016)
    >>>print mix[1]
    world
    >>>min=(1,2,3,4,5)
    >>>print min[0:3]
    1,2,3
    2)修改元组---元组不可以修改元组值,但可以对元组进行连接组合
    eg:>>>string=('hello','world')
    >>>num=(2015,2016)
    >>>print string+num
    ('hello','world',2015,2016)
    3)删除元组---元组中的元素值是不能被删除的,但可以使用del语句删除整个元组
    eg:>>>string=('hello','world')
    >>>del string
    >>>print string
    Traceback(most recent call last):
    注意:以上例子的元组被删除后,输出变量会有异常信息,输出结果告诉我们string没有定义,即元组不存在
    4)元组索引,截取
    因为元组也是一个序列,所以可以访问元组中指定位置的元素,也可以截取索引中的一段元素
    eg:>>>name=('hello','world','welcome')
    >>>print name[1]
    'world'
    >>>print name[1:]
    ('world','welcome')
    5,元组的内置函数
    1)len()方法---用于计算元组的长度
    eg:>>>name=('lisi','zhangsan','wangwu')
    >>>print len(name)
    3
    2)max()方法---用于返回元组中最大的元素
    eg:>>>name=('lisi','zhangsan','wangwu')
    >>>print max(name)
    'zhangsan'
    3)min()方法---用于返回元组中最小的元素
    eg:>>>name=('lisi','zhangsan','wangwu')
    >>>print min(name)
    'lisi'

    元组 和 列表的区别:区别就在于元组的元素不能修改而列表的元素可以修改

     


     

     

     

     

     

     

     

     

     

     

     

     

     

     

     


     

     

  • 相关阅读:
    C# 2008核心编程(20130713)
    java 异常处理机制
    指定节点滚动到屏幕中间的js
    mysql 数据误删恢复
    《How Tomcat works》
    HashMap中 工具方法tableSizeFor的作用
    mysql 是如何保证在高并发的情况下autoincrement关键字修饰的列不会出现重复
    为什么java io流必须得关闭
    下载文件出现内存溢出问题
    当使用junit4 对spring框架中controller/service/mapper各层进行测试时,需要添加的配置
  • 原文地址:https://www.cnblogs.com/1608415203min/p/8412871.html
Copyright © 2011-2022 走看看