python基础教程:list(列表)

作者: 一墨编程学习 | 来源:发表于2019-05-10 22:43 被阅读14次

    Python的基本数据类型有整数,浮点数,布尔,字符串,它们是最基本的数据。在实际编程中,我们要经常组织由很多基本数据组成的集合,这些集合的不同组织方式就是:数据结构,今天讲的是数据结构中的Python list(列表)。数据结构就是一些数据组合得到的“复合”数据类型。

    Python内置的数据结构有:

    • 列表(list)
    • 元组(tuple)
    • 字典(dict)
    • 集合(set)

    在Python语言中,以上4种数据结构和基础数据类型(整数、浮点数等)统称为“内置类型”(Built-in Types)。

    Python list(列表)

    Python list(列表),是Python中最常用的一种数据结构,它是一组用方括号括起来、逗号分隔的数据。列表的元素可以是任何类型的,但使用时通常各个元素的类型是相同的。下面的列表有5个元素,元素类型分别是字符串、整数、浮点数和列表:

    In [15]: list_a = ['a', 'b', 3, 8.9, [1,2]]
    
    In [16]: list_a
    Out[16]: ['a', 'b', 3, 8.9, [1, 2]]
    
    

    list(列表)的索引(index)

    列表就像一个叫号排队的队伍,从头到尾每个元素都有一个递增的号码,这个号码就是对应元素的“索引”(index)。与我们生活中不同的是,列表的第一元素的索引是0

    In [22]: list_a[0]
    Out[22]: 'a'
    
    In [23]: list_a[1]
    Out[23]: 'b'
    
    In [24]: list_a[3]
    Out[24]: 8.9
    
    

    列表这个队伍也可以从队尾往前叫号,也就是倒序叫号,这时候索引都是负的(负索引),队尾元素的索引s是-1,倒数第二个是-2,依次向前递减。

    In [25]: list_a[-1]
    Out[25]: [1, 2]
    
    In [26]: list_a[-2]
    Out[26]: 8.9
    
    

    Python列表的索引可以是正索引(从头到尾),也可以是负索引(从尾到头),总结为下面的关系:

    列表:  ['a', 'b', 'c', 'd', 'e']
             |    |    |    |    |
    正索引:  0    1    2    3    4
    负索引:  -5  -4   -3   -2   -1
    
    

    通过索引我们可以访问到某个元素,那么我们就可以修改这个元素。没错,列表里面的元素是可以被修改的,相当于你先替别人排了个队,他来了就把你替换了。

    In [31]: list_b = ['a', 'b', 'c']
    
    In [32]: list_b[1] = 2
    
    In [33]: list_b
    Out[33]: ['a', 2, 'c']
    
    

    list(列表)的切片(slicing)

    通过索引,我们可以访问list(列表)的单个元素。但有时候我们要取列表的一个片段,这就是“切片”操作。切片返回的是一个列表,可以理解为“子列表”。
    切片是通过索引来实现的,比如: list_a[1:3],这里索引变成两个用冒号:分隔,分别是切片的开始索引和结束索引,[1:3]代表的是一个左开右闭区间,即包含左边索引的元素,到右边索引为止但不包括该元素。那么list_a[1:3]得到的是['b', 3]:

    In [27]: list_a[1:3]
    Out[27]: ['b', 3]
    
    In [28]: list_a[:3]
    Out[28]: ['a', 'b', 3]
    
    In [29]: list_a[1:]
    Out[29]: ['b', 3, 8.9, [1, 2]]
    
    In [30]: list_a[:]
    Out[30]: ['a', 'b', 3, 8.9, [1, 2]]
    
    

    上面例子中,切片范围的起止索引可以是缺失的,左边缺失就是从头(0)开始,右边缺失就是后面的全部。

    list运算符

    列表作为Python的一种“内置类型”,它也像基本类型数字、字符串那样可以进行一些运算符的运算,如下表所示:

    运算符 含义 表达式 结果
    + 列表合并在一起 ['a', 'b', 'c'] + [1, 2, 3] ['a', 'b', 'c', 1, 2, 3]
    * 列表重复 ['a'] * 3 ['a', 'a', 'a']
    in 是否为列表元素 'a' in ['a', 'b'] True

    从头到尾遍历(迭代)一个list的语法是:for x in list

    for x in [1, 2, 3]:
        print(x)
    
    

    删除list(列表)

    (1)删除整个列表

    In [35]: list_a = ['a', 'b', 3, 8.9, [1,2]]
    
    In [36]: del list_a
    
    In [37]: list_a
    ---------------------------------------------------------------------------
    NameError    Traceback (most recent call last)
    <ipython-input-37-1dc2d082cc20> in <module>
    ----> 1 list_a
    
    NameError: name 'list_a' is not defined
    
    

    del是Python的一个保留关键字,用于删除(delete)对象。Python里面的所有东西都是对象,所有del可以用于删除变量、列表等等。

    (2)删除列表的一个或多个元素

    In [41]: list_a = ['a', 'b', 3, 8.9, [1,2]]
    
    In [42]: del list_a[0] # 删除一个元素
    
    In [43]: list_a
    Out[43]: ['b', 3, 8.9, [1, 2]]
    
    In [44]: del list_a[1:3] # 删除切片
    
    In [45]: list_a
    Out[45]: ['b', [1, 2]]
    
    
    Python数据结构: list(列表)

    list(列表)推导式

    处理一个序列中的所有或部分元素并返回结果列表的一种紧凑写法。见下面的例子:

    In [50]: even = [2 * i for i in range(10)]
    
    In [51]: even
    Out[51]: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
    
    In [52]: even2 = [i for i in range(20) if i % 2 == 0]
    
    In [53]: even2
    Out[53]: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
    
    

    生成even的过程是把0~10之间的数字都乘以2变成偶数;
    生成even2的过程是从0~20之间挑选出偶数。

    这两个都是列表推导式,并且后面的是加了if条件只处理原列表的部分元素。

    list(列表)相关的内置函数

    Python内置函数中有一些可以对list进行操作,它们是:

    (1)len()
    计算列表的长度,即计算列表元素的个数)

    In [55]: len([1,2,3])
    Out[55]: 3
    
    

    (2)max()
    返回列表元素中的最大值,列表元素必须是同一类型且可比较,比如都是数字型的,或都是字符串,如果类型不统一就会报错:

    In [57]: max(['a', 'b', 'c'])
    Out[57]: 'c'
    
    In [58]: max([1,2,'a'])
    ---------------------------------------------------------------------------
    TypeError   Traceback (most recent call last)
    <ipython-input-58-d6e404f692f3> in <module>
    ----> 1 max([1,2,'a'])
    
    TypeError: '>' not supported between instances of 'str' and 'int'
    
    

    (3)min()
    返回列表元素中的最小值。元素类型要求跟max()一样。

    In [59]: min([1,2,3])
    Out[59]: 1
    
    In [60]: min(['a', 'b', 'c'])
    Out[60]: 'a'
    
    In [61]: min([1,2,'a'])
    ---------------------------------------------------------------------------
    TypeError    Traceback (most recent call last)
    <ipython-input-61-c2d30ec5fffc> in <module>
    ----> 1 min([1,2,'a'])
    
    TypeError: '<' not supported between instances of 'str' and 'int'
    
    

    (4)sum()
    计算列表所有元素的和,其元素类型必须是数值型的(整数、浮点数)

    In [63]: sum([1,2,3])
    Out[63]: 6
    
    In [64]: sum([1.2, 3.2, 4.3])
    Out[64]: 8.7
    
    In [65]: sum(['a', 'b', 'c'])
    ---------------------------------------------------------------------------
    TypeError   Traceback (most recent call last)
    <ipython-input-65-f2e6eb2051e3> in <module>
    ----> 1 sum(['a', 'b', 'c'])
    
    TypeError: unsupported operand type(s) for +: 'int' and 'str'
    
    

    (5)sorted()
    返回一个排序的列表,但并不改变原列表。

    In [66]: sorted([3, 9, 0, 5])
    Out[66]: [0, 3, 5, 9]
    
    In [68]: sorted(['python', 'yuanrenxue', 'good'])
    Out[68]: ['good', 'python', 'yuanrenxue']
    
    

    (6)list()
    生成一个空列表,或把其它类型数据转换成list。

    In [69]: list()
    Out[69]: []
    
    In [70]: list('python')
    Out[70]: ['p', 'y', 't', 'h', 'o', 'n']
    
    

    (7)any()
    只要列表中有一个元素是True就返回True。

    In [72]: any([0, '', '3'])
    Out[72]: True
    
    

    (8)all()
    只有列表所有元素为True才返回True。

    In [73]: all([0, '', '3'])
    Out[73]: False
    
    In [74]: all([3, 'a', True])
    Out[74]: True
    
    

    list(列表)的内置方法

    前面我们说的是Python语言的“内置函数”,这里我们讲的是列表本身的“内置方法”。函数和方法有什么区别呢?

    • 函数: 是一系列语句的集合,调用后可以返回一个或一些值。可以给它传递0个或多个参数,这些参数可能被用于函数内部的执行过程。
    • 方法: 就是定义在类内部的函数。很明显,方法是与某个对象关联的。方法的调用方法就是在对象后面加.再加方法名称。

    Python中的一切都是对象,列表也不例外,那自然列表也有其自有的方法,总结为下表:

    方法 功能 示例 结果
    append() 把一个元素加到列表的尾部 a=[1,2];a.append('a') a变为 [1,2,'a']
    insert() 把一个元素加到列表的特定位置 a=[1,2]; a.insert(1, 'c') a变为:[1, 'c', 2]
    remove() 删除第一个出现的某元素 a=[1,2]; a.remove(2) a变为:[1]
    pop() 删除并返回某个位置(索引)的元素 a=[1,2];a.pop(1) a变为:[1]
    clear() 清空列表 a=[1,2];a.clear() a变为:[]
    index() 返回遇到的第一个某值的索引,
    如果列表不包含该值则抛出错误 a=[1,1,1];a.index(1) 返回0
    count() 返回列表中某值的个数 a=[1,1,2];a.count(1) 返回2
    sort() 对列表进行排序 a=[3,2,1];a.sort() a变为:[1,2,3]
    reverse() 将列表倒置 a=[2,1,3];a.reverse() a变为:[3,1,2]

    Python list(列表)总结

    列表是Python中最常用的数据结构之一,主要用于数据的顺序存储。

    大家在学python的时候肯定会遇到很多难题,以及对于新技术的追求,这里推荐一下我们的Python学习扣qun:784758214,这里是python学习者聚集地!!同时,自己是一名高级python开发工程师,从基础的python脚本到web开发、爬虫、django、数据挖掘等,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!每日分享一些学习的方法和需要注意的小细节

    相关文章

      网友评论

        本文标题:python基础教程:list(列表)

        本文链接:https://www.haomeiwen.com/subject/zyxzoqtx.html