当前位置 博文首页 > Python入门篇之列表和元组

    Python入门篇之列表和元组

    作者:admin 时间:2021-07-15 18:39

    列表和元组的主要区别在于,列表可以修改,元组则不能。一般情况下,在几乎所有的情况下列表都可以代替元组

    例如:使用序列可以表示数据库中一个人的信息(姓名,年龄)

    复制代码 代码如下:

    >>> edward=['Edward Gumby',42]

    序列还可以包含其他序列

    复制代码 代码如下:

    >>> edward=['Edward Gumby',42]
    >>> john=['John Smith',50]
    >>> database=[edward,john]
    >>> database
    [['Edward Gumby', 42], ['John Smith', 50]]

    通用序列操作
    所有的序列操作都可以进行某些特定的操作。这些操作包括:索引、分片、加、乘以及检查某个元素是否属于序列的成员

    索引

    序列中的所有元素都是有编号的--从0开始递增。这些元素可以通过编号分别访问,如下:

    复制代码 代码如下:

    >>> greeting='hello'
    >>> greeting[0]
    'h'
    >>> greeting[-1]
    'o'
    >>> 'hello'[1]
    'e'

    如果一个函数调用返回一个序列,那么可以直接对返回结果进行索引操作,例如:

    复制代码 代码如下:

    >>> fourth=raw_input('Year:')[3]
    Year:2005
    >>> fourth
    '5'
     View Code
     

    运行结果:

    复制代码 代码如下:

    >>>
    Year: 1974
    Month(1-12): 8
    Day(1-31): 16
    August 16th, 1974

    分片

    使用分片操作来访问一定范围内的元素,分片通过冒号相隔的两个索引来实现:

    复制代码 代码如下:

    >>> tag='<a herf="http://www.python.org">Python web site</a>'
    >>> tag[9:30]
    'http://www.python.org'
    >>> tag[32:-4]
    'Python web site'

    第一个索引是需要提取部分的第一个元素的编号,而最后的索引则是分片之后剩下部分的第一个元素的编号

    复制代码 代码如下:

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

    1、优雅的捷径

    访问最后的三个元素,当然可以进行显示的操作

    复制代码 代码如下:

    >>> numbers[7:10]
    [8, 9, 10]
    >>> numbers[-3:-1]
    [8, 9]
    >>> numbers[-3:0]
    []
    >>> numbers[-3:]
    [8, 9, 10]

    只有最后一个分片完成任务,这种方法同样适用序列开始的元素:

    复制代码 代码如下:

    >>> numbers[:3]
    [1, 2, 3]

    实际上,如果需要复制整个序列,可以将两个索引都置空:

    复制代码 代码如下:

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

    2、更大的步长

    分片还有第三个参数--步长,通常都是隐式设置的,在一般情况下,步长是1,不能为0,但是可以为负数,即从右往左提取元素

     测试代码
    序列相加

    通过使用加号可以进行序列的连接操作:

    复制代码 代码如下:

    >>> [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 "<pyshell#107>", line 1, in <module>
        [1,2,3]+'world!'
    TypeError: can only concatenate list (not "str") to list

    乘法

    用数字x乘以一个序列会生成新的序列,而在新的序列中,原来的序列将被重复x次

    复制代码 代码如下:

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

    成员资格

    为了检查一个值是否在序列中,可以使用in运算符,该运算符返回布尔值

    复制代码 代码如下:

    >>> permissions='rw'
    >>> 'w'in permissions
    True
    >>> 'x'in permissions
    False
    Enter your name: mlh
    True
    >>> subject='$$$ Get rich now!!! $$$'
    >>> '$$$'in subject
    True

    长度、最小值和最大值

    内建函数len、min、max,len函数返回序列中所包含元素的数量,min和max函数分别返回序列中最大和最小的元素

    复制代码 代码如下:

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

    list函数

    list函数可以根据字符串创建列表

    复制代码 代码如下:

    >>> list('hello')
    ['h', 'e', 'l', 'l', 'o']

    基本列表操作:
    1、改变列表:元素赋值

    使用索引标记来为某个特定的、位置明确的元素赋值:

    复制代码 代码如下:

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

    2、删除元素

    使用del语句来实现:

    复制代码 代码如下:

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

    注意:Cecil是彻底删除,列表长度也从5变为4

    3、分片赋值

     View Code
    列表方法:

    方法是一个与某些对象有紧密联系的函数,对象可能是列表、数字,也可能是字符串或者其他类型的对象,方法的调用方式:对象.方法(参数)

    1、append

    append方法用于在列表末尾追加新的对象:

    复制代码 代码如下:

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

    2、cout

    count方法用于统计某个元素在列表中出现的次数:

    复制代码 代码如下:

    >>> ['to','be','or','not','to','be'].count('to')
    2
    >>> x=[[1,2],1,1,[2,1,[1,2]]]
    >>> x.count(1)
    2
    >>> x.count([1,2])
    1

    3、extend

    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]

    4、index

    index方法用于从列表中找出某一个匹配项的索引位置:

    复制代码 代码如下:

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

    Traceback (most recent call last):
      File "<pyshell#184>", line 1, in <module>
        knights.index('herring')
    ValueError: 'herring' is not in list

    没有成功找到会引发异常

     5、insert

    insert方法用于将对象插入到列表中:

    复制代码 代码如下:

    >>> numbers=[1,2,3,5,6,7]
    >>> numbers.insert(3,'four')
    >>> numbers
    [1, 2, 3, 'four', 5, 6, 7]
    >>> #extend方法一样,insert方法的操作也可以用分片赋值来实现
    >>> numbers=[1,2,3,5,6,7]
    >>> numbers[3:3]=['four']
    >>> numbers
    [1, 2, 3, 'four', 5, 6, 7]

    6、pop

    pop方法会移除列表中的一个元素(默认是最后一个),并且返回该元素的值:

    复制代码 代码如下:

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

    注意:pop方法是唯一一个既能修改列表又返回元素值(除了None)的列表方法

    7、remove

    remove方法用于移除列表中某个值的第一个匹配项:

    复制代码 代码如下:

    >>> x=['to','be','or','not','to','be']
    >>> x.remove('be')
    >>> x
    ['to', 'or', 'not', 'to', 'be']
    >>> x.remove('bee')

    Traceback (most recent call last):
      File "<pyshell#19>", line 1, in <module>
        x.remove('bee')
    ValueError: list.remove(x): x not in list

    8、reverse

    reverse方法将列表中的元素反向存放,该方法也改变了列表但不返回值

    复制代码 代码如下:

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

    sort方法用于在原位置对列表进行排序,改变原来的列表,从而让其中的元素按照一定的

    复制代码 代码如下:

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

     元组
    元组与列表一样,也是一种序列,唯一不同的是元组不可以修改:

    任意对象的有序集合
    通过偏移存储
    属于不可变序列类型
    固定长度、异构、任意嵌套
    对象引用数组
    使用逗号分隔了一些值,就自动创建了一个元组:

    复制代码 代码如下:

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

    元组也是(大部分时候是)通过圆括号括起来的,空元组可以用没有包含内容的两个圆括号来表示:

    tuple函数

    tuple函数的功能和list函数基本上是一样的:以一个序列作为参数并把它转换为元组。

    复制代码 代码如下:

    >>> tuple([1,2,3])
    (1, 2, 3)
    >>> tuple('abc')
    ('a', 'b', 'c')
    >>> tuple((1,2,3))
    (1, 2, 3)

    列表与元组的相互转化:

    复制代码 代码如下:

    >>> T=('cc','aa','dd','bb')
    >>> tmp=list(T)
    >>> tmp
    ['cc', 'aa', 'dd', 'bb']
    >>> T=tuple(tmp)
    >>> T
    ('cc', 'aa', 'dd', 'bb')

    jsjbwy
    下一篇:没有了