美文网首页python学习笔记
python学习笔记(二)列表和元组

python学习笔记(二)列表和元组

作者: Broken故城 | 来源:发表于2020-02-22 15:04 被阅读0次

    个人笔记,仅供参考

    二、列表和元组

    1、序列概述

    python内置了多种序列,本章重点讨论其中最常用的两种:列表元组。另一种重要的序列是字符串。

    列表和元组主要的不同在于,列表是可以修改的,而元组不行。所以列表适用于需要中途添加元素的情况,而元组适用于需要禁止修改的情况。

    2、通用的序列操作

    索引,切片,相加,相乘和成员资格检查

    2.1索引

    序列中的所有元素都有编号——从0开始递增。可以使用编号来访问各个元素

    >>> greeting = 'hello'
    >>> greeting[0]
    'h'
    

    tips:可以使用负数索引来访问倒数的元素,例如-1可以访问倒数第一个元素

    对字符串也可以使用索引:

    >>> 'Hello'[1]
    'e'
    

    或者函数调用返回序列,可以直接对其执行索引操作。

    >>> fourth = input('Year: ')[3]
    Year: 2005
    >>> fourth
    '5'
    

    2.2切片

    切片可以访问特定范围内的元素。为此,可使用两个索引,并用冒号分隔

    >>> numbers = [1,2,3,4,5,6,7,8,9,10]
    >>> numbers[3:6]
    [4, 5, 6]
    

    注意:前面索引是包含在切片内的而后面的索引不包含

    可以使用一个索引来从头开始或者切到最后

    >>> numbers[:6]
    [1, 2, 3, 4, 5, 6]
    >>> numbers[3:]
    [4, 5, 6, 7, 8, 9, 10]
    

    或者省略两个索引来复制整个序列

    >>> numbers[:]
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    

    切片操作时可以指定第三个参数——步长

    >>> numbers[0:10:2]
    [1, 3, 5, 7, 9]
    

    默认的步长为1,这里改为了2,即隔一个元素取一个值

    还可以设置负数步长,从右向左提取元素,但索引要反过来写

    >>> numbers[8:3:-1]
    [9, 8, 7, 6, 5]
    >>> numbers[10:0:-2]
    [10, 8, 6, 4, 2]
    >>> numbers[0:10:-2]
    []
    >>> numbers[::-2]
    [10, 8, 6, 4, 2]
    >>> numbers[5::-2]
    [6, 4, 2]
    >>> numbers[:5:-2]
    [10, 8]
    

    使用这种方法要注意索引

    2.3序列相加

    可以使用加法运算来拼接序列

    >>> [1,2,3] + [4,5,6]
    [1, 2, 3, 4, 5, 6]
    >>> 'Hello,' + 'world!'
    'Hello,world!'
    >>> [1,2,3] + 'world'
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: can only concatenate list (not "str") to list
    

    注意:只有同类型的序列才可以相加

    2.4、乘法

    >>> 'python' * 5
    'pythonpythonpythonpythonpython'
    >>> [42] *5
    [42, 42, 42, 42, 42]
    

    2.4.1、none、空列表和初始化

    空列表是使用不包含任何内容的两个方括号表示的,如果要创建一个10个元素的列表,但没有什么内容,可以使用乘法创建

    >>> sequence = [None] * 10
    >>> sequence
    [None, None, None, None, None, None, None, None, None, None]
    

    2.5成员资格

    要检查特定的值是否包含在序列中,可使用运算符in

    >>> permissions = 'rw'
    >>> 'r' in permissions
    True
    >>> 'x' in permissions
    False
    

    2.5.1长度、最小值和最大值

    使用内置函数lenminmax

    >>> numbers = [100,34,678]
    >>> len(numbers)
    3
    >>> min(numbers)
    34
    >>> max(numbers)
    678
    

    3、列表:python的主力

    3.1、函数list

    将参数拆成列表

    >>> list('Hello')
    ['H', 'e', 'l', 'l', 'o']
    

    注意:可以将任何序列作为list的参数

    3.2、基本的列表操作

    3.2.1、修改列表:给元素赋值

    >>> x = [1,1,1]
    >>> x[1] = 2
    >>> x
    [1, 2, 1]
    

    3.2.2、删除元素

    使用del语句即可

    >>> names = ['Alice','Beth','Cecil','Dee-Dee','Earl']
    >>> del names[2]
    >>> names
    ['Alice', 'Beth', 'Dee-Dee', 'Earl']
    

    del语句还可用于删除其他东西

    3.2.3给切片赋值

    >>> name = list('perl')
    >>> name
    ['p', 'e', 'r', 'l']
    >>> name[2:] = list('ar')
    >>> name
    ['p', 'e', 'a', 'r']
    

    由以上代码可知,可同时给多个元素赋值。切片赋值可将切片替换为长度与其不同的序列,如下:

    >>> name = list('Perl')
    >>> name[1:] = list('ython')
    >>> name
    ['P', 'y', 't', 'h', 'o', 'n']
    

    使用切片赋值还可以在不替换原有元素的情况下插入新元素

    >>> numbers = [1,5]
    >>> numbers[1:1] = [2,3,4]
    >>> numbers
    [1, 2, 3, 4, 5]
    

    这里,我“替换”了一个空切片,相当于插入了一个序列。可以使用相反的措施来删除切片

    >>> numbers
    [1, 2, 3, 4, 5]
    >>> numbers[1:4] = []
    >>> numbers
    [1, 5]
    

    4、列表方法

    4.1、append()

    方法append可以将一个对象添加到列表末尾

    >>> lst = [1,2,3]
    >>> lst.append(4)
    >>> lst
    [1, 2, 3, 4]
    

    4.2、clear

    方法clear就地清空列表

    >>> lst = [1,2,3]
    >>> lst.clear()
    >>> lst
    []
    

    4.3、copy

    方法copy复制列表。常规复制只是将另一个名称关联到列表,而copy则是创建副本

    >>> a = [1,2,3]
    >>> b = a
    >>> b[1] = 4
    >>> a
    [1, 4, 3]
    

    如上,常规方法会动原列表

    >>> a = [1,2,3]
    >>> b = a.copy()
    >>> b[1]=4
    >>> a
    [1, 2, 3]
    

    4.4、count

    方法count计算指定的元素在列表中出现了多少次。

    >>> x = [[1,2],1,1,[2,1,[1,2]]]
    >>> x.count(1)
    2
    >>> x.count([1,2])
    1
    

    4.5、extend

    用于同时将多个值附加到列表末尾,可将这些值组成序列当作参数

    >>> a = [1,2,3]
    >>> b = [4,5,6]
    >>> a.extend(b)
    >>> a
    [1, 2, 3, 4, 5, 6]
    

    注意,常规的加法效果不一样

    >>> a = [1,2,3]
    >>> b = [4,5,6]
    >>> a + b
    [1, 2, 3, 4, 5, 6]
    >>> a
    [1, 2, 3]
    

    这里a没有被修改

    4.6、index

    方法index在列表中查找指定值第一次出现的索引

    >>> knights = ['we','are','the','knights','who','say','ni']
    >>> knights.index('who')
    4
    

    搜索列表中没有的值会报错

    4.7、insert

    方法insert用于将一个对象插入列表

    >>> numbers = [1,2,3,4,5,6,7]
    >>> numbers.insert(3,'four')
    >>> numbers
    [1, 2, 3, 'four', 4, 5, 6, 7]
    

    4.8、pop

    pop从列表中删除一个元素,并返回这一元素。

    >>> x = [1,2,3]
    >>> x.pop()
    3
    >>> x
    [1, 2]
    >>> x.pop(0)
    1
    >>> x
    [2]
    
    >>> x = [1,2,3]
    >>> x.append(x.pop())
    >>> x
    [1, 2, 3]
    

    4.9、remove

    方法remove用于删除第一个为指定值的元素

    >>> x = [1,2,3,4,5]
    >>> x.remove(1)
    >>> x
    [2, 3, 4, 5]
    

    4.10、reverse

    方法reverse按相反的顺序排列列表中的元素

    >>> x = [1,2,3]
    >>> x.reverse()
    >>> x
    [3, 2, 1]
    

    4.11、sort

    sort用于对列表就地排序,会对原来的列表进行修改。

    >>> x = [4,6,2,1,7,9]
    >>> x.sort()
    >>> x
    [1, 2, 4, 6, 7, 9]
    

    为获取排序后的列表的副本,使用函数sorted

    >>> x = [4,6,2,1,7,9]
    >>> y = sorted(x)
    >>> x
    [4, 6, 2, 1, 7, 9]
    >>> y
    [1, 2, 4, 6, 7, 9]
    

    这个函数可用于任何序列,但总是返回一个列表

    >>> sorted('python')
    ['h', 'n', 'o', 'p', 't', 'y']
    

    5、元组:不可修改的序列

    >>> 1,2,3
    (1, 2, 3)
    

    如你所见,元组用圆括号括起。

    注意:即使只有一个值,也要使用逗号

    函数tuple可以将一个序列转换为元组。

    >>> tuple([1,2,3])
    (1, 2, 3)
    

    6、小结

    函数 描述
    len(seq) 返回序列的长度
    list(seq) 将序列转换为列表
    max(args) 返回序列或一组参数中的最大值
    min(args) 返回序列或一组参数中的最小值
    reversed(seq) 让你能反向迭代序列
    sorted(seq) 返回一个有序列表,其中包含指定序列的所有元素
    tuple(seq) 将序列转换为元组

    列表和元组都是python开发中使用频繁的序列,此内容需完全掌握。

    相关文章

      网友评论

        本文标题:python学习笔记(二)列表和元组

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