zoukankan      html  css  js  c++  java
  • python基本数据类型之列表和元组

    python基本数据类型之列表与元组

    python中list与tuple都是可以遍历类型。不同的是,list是可以修改的,而元组属于不可变类型,不能修改。
    列表和元组中的元素可以是任意类型,并且同一个列表和元组中可以包含多种类型的元素。
    list中有很多内置方法,元组由于不能修改,所以只有两个方法(count、index)。

    列表的内置方法

    list的内置方法有:append、clear、copy、count、extend、index、insert、pop、remove和sort。

    1、添加方法:append、insert和extend

    列表是可变类型,也就是说我们能够对列表进行元素的添加、删除和修改。list中提供了3种添加元素的方法。

    • append:在列表的最后添加元素;
    • insert:可以指定在哪个位置添加元素;
    • extend:在列表的最后添加新的列表(用于同时添加多个元素)。

    (1) append方法
    该方法仅需要一个参数,即所需要添加的元素。

    l = ['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}]
    l.append(('Jerry',5))
    print(l)
    

    打印结果:

    ['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}, ('Jerry', 5)]
    

    可以看到append方法在列表的最后添加了一个元组。

    (2) insert方法
    该方法可以指定元素添加的位置。insert方法需要两个参数:insert(index, p_object),index用来指定插入位置,p_object是要插入的元素。

    l = ['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}]
    l.insert(2, '哈喽')
    print(l)
    

    打印结果:

    ['haha', 'yeye', '哈喽', True, 143, {'name': 'Tom', 'age': 3}]
    

    (3) extend方法
    extend方法可以扩展原有列表,方法需要传入一个可遍历对象(list、tuple或字符串等),该方法就是将传入的对象添加到原列表的后面。

    l.extend(['Lily', False, (234, 567)])
    print(l)
    

    打印结果:

    ['haha', 'yeye', '哈喽', True, 143, {'name': 'Tom', 'age': 3}, 'Lily', False, (234, 567)]
    

    extend会将传入的对象进行遍历,然后把其中的每个元素作为新的元素添加到原列表中。在添加字符串时,列表后面增加的是字符串的单个字符。

    l = ['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}]
    l.extend('zhe')
    print(l)
    

    打印结果:

    ['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}, 'z', 'h', 'e']
    

    2、删除方法:clear、pop和remove

    (1) clear方法
    该方法可以清空列表:

    l = ['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}]
    l.clear()
    print(l)
    

    打印结果:[]

    (2) pop方法
    pop方法可以删除列表中的指定元素,并将删除的元素返回。如果不传入参数,pop默认删除列表中最后一个元素;如果传入参数,则需要指定删除元素的索引。

    l = ['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}]
    v1 = l.pop()
    print('v1 = ' + str(v1))
    
    v2 = l.pop(1)
    print('v2 = ' + str(v2))
    

    打印结果:

    v1 = {'name': 'Tom', 'age': 3}
    v2 = yeye
    

    (3) remove方法
    remove方法同样也可以删除列表中的指定元素,但是remove需要的参数则是要删除的对象,而不是索引。这一点与pop方法不同。

    l.remove('haha')
    print(l)
    

    打印结果:

    ['yeye', True, 143, {'name': 'Tom', 'age': 3}]
    

    remove方法会删除指定元素,但是并不会返回该元素。

    需要注意的是:对于pop方法来说,如果要删除的列表为空或者没有指定的索引,会返回IndexError,即索引溢出错误;对于remove方法,如果删除的元素在列表中不存在,就会返回值错误ValueError。

    3、其他方法

    (1) copy方法
    copy可以复制一个列表,这种复制属于浅拷贝(深浅拷贝的话题参见相关文章)。

    l = ['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}]
    v = l.copy()
    print(v)
    

    打印结果:

    ['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}]
    

    (2) count方法
    该方法用来计算某个元素在列表中出现的次数

    l = ['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}, True]
    v = l.count(True)
    print(v)
    

    打印结果:2

    (3) index方法
    该方法返回某个元素在列表中第一次出现的索引。该方法有3个参数:index(value, start, stop),用法与字符串中的index方法一致。value是要查找的对象,start和stop分别指定查找的起始和终止位置(包含start,不含stop)。

    l = ['haha', 'yeye', True, 143, {'name': 'Tom', 'age': 3}, True]
    v = l.index(True, 3)
    print(v)
    

    打印结果:5
    上述例子中,True在l中有两个,分别在l[2]和l[5]两个位置。第二个参数'3'指定了开始查找的地方,即从索引3开始查找,因此第一个True就是索引'5'。

    (4) sort方法
    sort方法是为列表中的元素进行排序,但是使用该方法时,要保证元素的类型保持一致。即元素要么全部为字符串,要么全部为数字。sort方法没有返回值,它的排序会直接改变原来的list。
    sort方法有两个参数:key=None, reverse=False。参数key使用一个函数来指定排序依据,reverse表示是否将顺序进行反转。
    首先看没有参数的sort方法:

    l = 'This is a sort function test'.split()
    print('before:' + str(l))
    l.sort()
    print('after:' + str(l))
    

    打印结果:

    before:['This', 'is', 'a', 'sort', 'function', 'test']
    after:['This', 'a', 'function', 'is', 'sort', 'test']
    

    可以看到,sort排序默认是按照ascii码值进行的。大写字母在前,小写字母在后。
    使用key来指定一个按照每个元素的小写字母进行排序的规则:

    l = 'This is a sort function test'.split()
    print('before:' + str(l))
    l.sort(key = lambda x: x.lower())
    print('after:' + str(l))
    

    打印结果:

    before:['This', 'is', 'a', 'sort', 'function', 'test']
    after:['a', 'function', 'is', 'sort', 'test', 'This']
    

    可以指定按照tuple中的元素来进行排序:

    l_tuple = [('haha', 23), ('yuyu', 15), ('oiui', 32), ('erer', 53)]
    l_tuple.sort(key=lambda x: x[1], reverse=True)
    print(l_tuple)
    

    打印结果:

    [('erer', 53), ('oiui', 32), ('haha', 23), ('yuyu', 15)]
    

    上面例子中使用的lambda是匿名函数,相关内容参见函数部分。
    list中的sort方法与python中的sorted()内置方法很像,都可以自定义排序规则。不同的是,sorted()方法可以为所有可遍历类型进行排序。

    tuple方法

    tuple是不可变对象,所以它没有list中的修改、删除、添加等方法,它的方法只有两个:count和index。
    count、index的方法与list中的方法使用方式一致,因此不再赘述。

  • 相关阅读:
    814. Binary Tree Pruning
    50. Pow(x, n)
    698. Partition to K Equal Sum Subsets
    416. Partition Equal Subset Sum
    150. Evaluate Reverse Polish Notation
    322. Coin Change
    Vulnerable Kerbals CodeForces
    D. Domino for Young
    C. Long Beautiful Integer
    B. Modulo Equality
  • 原文地址:https://www.cnblogs.com/guyexiangyun/p/10237743.html
Copyright © 2011-2022 走看看