• 【Rollo的Python之路】Python:列表的学习笔记


      列表初识:

      列表是Python3 里面常见的一种数据类型之一,列表每个元素都分配一个数据用来索引,他的位置 是从0开始,第一个数据 是0,第二个数据是1,以此类推

      列表的表达形式是方括号表示,逗号隔开,列表类的元素不要求是统一的形式,可以是数字,也可以字符,或者是两的混合体。

      创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可

    list1 = ["a","b","c","d","e","f"]
    list2 = ["google","baidu","bingo","sina","facebook"]
    list3 = [1,2,3,"A","B","C","google"]

      下面来我们来打印一下结果:

    list1 = ["a","b","c","d","e","f"]
    list2 = ["google","baidu","bingo","sina","facebook"]
    list3 = ["1","2","3","A","B","C","google"]
    
    print(list1)
    print(list2)
    print(list3)
    #结果是:
    ['a', 'b', 'c', 'd', 'e', 'f']
    ['google', 'baidu', 'bingo', 'sina', 'facebook']
    ['1', '2', '3', 'A', 'B', 'C', 'google']

      列表的常见操作有:增、删、减、查

      A1  查看列表的方法:切片

      A.切片的方法来查看列表,第一个位置从0开始:

    name = ['name1','name2','name3','name4','name5']
    
    print(“name_first_date:”,name[0]) #取的第一个

      打印结果是:

    name_first_date: name1

      B.第一个元素是:0位,第二个是:1位,第三个是2位。。。。。。以此类推。

    name = ['name1','name2','name3','name4','name5']
    
    print(name[1:3]) #这表示从第二个位置开始取,取后三个位,但是第三个位的第4个元素是不会取的,可以这记住:从第二个位置开始取,取到第三个元素

      打印结果是:

    ['name2', 'name3']

      C.想要把整个列表取完:

    name = ['name1','name2','name3','name4','name5']
    
    print(name[1:]) #整个列表取完,第二个位留空就行

      打印结果是:

    ['name2', 'name3', 'name4', 'name5']

      D.想要取到倒数第二值:

    name = ['name1','name2','name3','name4','name5']
    
    print(name[:-1]) #取到倒数第二值

      打印结果是:

    ['name1', 'name2', 'name3', 'name4']

      E.想要从左到右一个一个取值:

    name = ['name1','name2','name3','name4','name5']
    
    print(name[0::1]) #从左向右一个一个去取,这里的1代表:步长
    print(name[1:-1:1]) #从name2,从左向右一个一个去取,取到倒数第二个值

      F.想要隔一个取,或隔二个取值:

    name = ['name1','name2','name3','name4','name5']
    
    print(name[1::2])  #从左到中隔一个去取
    print (name[0::3]) #从左到中隔二个去取

      打印结果是:

    ['name2', 'name4']
    ['name1', 'name4']

      G:步长负数代表方向为从右向左:

    name = ['name1','name2','name3','name4','name5','name6','name7']
    
    print(name[3::-2]) #-2代表从右开始走,步长为2,读数也是从右往左走,3代表从name4开始,从右往左去取
    print(name[2:1:-1]) #-1代表从右开始走,步长为1.读数是从name3开始,因为name3的索引值为2,取的范围是 name3-name2,但是不会取name2
    print(name[5:2:-1])

      打印结果是:

    ['name4', 'name2']
    ['name3']
    ['name6', 'name5', 'name4']

      A2 查看列表的方法:index

    Index 是取元素在列表中的位置。

        def index(self, *args, **kwargs): # real signature unknown
            """
            Return first index of value.
            
            Raises ValueError if the value is not present.
            """
            pass
    name = ['name1','name2','name3','name4','name5','name6','name7']
    
    print (name.index('name5'))
    
    #结果是
    
    4

      再来一组看看:

    name = ['name1','name2','name3','name4','name5','name6','name7']
    
    print (name.index('name2'))
    print (name.index('name4'))
    print (name.index('name5'))
    print (name.index('name7'))
    1
    3
    4
    6

      A3 查看列表的方法:count,列表中元素出现的次数

      count 的英文解释是:

        def count(self, *args, **kwargs): # real signature unknown
            """ Return number of occurrences of value. """
            pass

    我们来看代码:

    message = [1,2,2,1,1,2,1,2,2,1,2,3,4,5,1,2,1,2]
    
    print (message.count(2))
    
    #结果是
    
    8 #代表着message列表里面2这个元素出现了8次

      A4 查看列表的方法:in,查看一个元素是否出现在列表中

    name = ['name1','name2','name3','name4','name5','name6','name7']
    
    print ('name9' in name)

      打印结果是:

    False

      B 增加列表的方法:

      B1.a.append()

    a.append()方法是在列表的后最后一位加上一个元素

    英文解释是:

        def append(self, *args, **kwargs): # real signature unknown
            """ Append object to the end of the list. """
            pass

    请看代码:

    name = ['name1','name2','name3','name4','name5','name6','name7']
    
    name.append('name9')
    print (name)
    
    #执行结果
    
    ['name1', 'name2', 'name3', 'name4', 'name5', 'name6', 'name7', 'name9']

    直接在'name7'的后面加了一个‘name9’.能不能加两个呢?不能

    name = ['name1','name2','name3','name4','name5','name6','name7']
    
    name.append('name9','name10')
    print (name)
    
    #执行结果:
    
    name.append('name9','name10')
    TypeError: append() takes exactly one argument (2 given)

    错误,append()只能加一个数据,给了两个,报错!!!

      B2.insert() 方法

    如果我们要在列表的指定位置加入一个元素,就要用到insert 方法。

    insert 英文解释是:在某个标志位前插入一个对象或元素。

      def insert(self, *args, **kwargs): # real signature unknown
            """ Insert object before index. """
            pass
    name = ['name1','name2','name3','name4','name5','name6','name7']
    
    name.insert(3,'Rollo.St')
    print (name)
    
    #执行结果:
    
    ['name1', 'name2', 'name3', 'Rollo.St', 'name4', 'name5', 'name6', 'name7']

    也是只能插入一个对象,不能两个或多个:

    name = ['name1','name2','name3','name4','name5','name6','name7']
    
    name.insert(3,4,'Rollo.St','name11')
    print (name)
    
    #执行结果:
    
     name.insert(3,4,'Rollo.St','name11')
    TypeError: insert() takes exactly 2 arguments (4 given)

      B3.extend() 方法

    extend() 可以在一个列表的末尾追加另一个列表中的多个值。

        def extend(self, *args, **kwargs): # real signature unknown
            """ Extend list by appending elements from the iterable. """

    我们来看演示代码:

    name = ['name1','name2','name3','name4','name5','name6','name7']
    name2 = [1,2,3,4,5]
    
    name.extend(name2)
    
    print (name)
    
    #执行结果
    
    ['name1', 'name2', 'name3', 'name4', 'name5', 'name6', 'name7', 1, 2, 3, 4, 5]
    append,将对象直接添加到原数组尾部,不加修改,直接添加
    
    extend,添加的对象被解析为iterable对象,将其中元素逐一添加到原数组尾部
    
    文档中解析分别是:
    
    extend: append object to end
    
    append: extend list by appending elements from the iterable

      C.列表的修改


    可以用找出索引位,直接换值。

    name = ['name1','name2','name3','name4','name5','name6','name7']
    
    name[0] = 1
    
    #扫行结果:
    
    [1, 'name2', 'name3', 'name4', 'name5', 'name6', 'name7']
    name = ['name1','name2','name3','name4','name5','name6','name7']
    
    name[0:2] = ['K1','K2'] #2个位,赋两个值。
    print (name)
    
    #执行结果:
    
    ['K1', 'K2', 'name3', 'name4', 'name5', 'name6', 'name7']
    name = ['name1','name2','name3','name4','name5','name6','name7']
    
    name[1:4] = ['X1','X2'] #从索引1到3位,也就是name2=X1,name3=X2,name4没有赋值,会被删除,这是少赋值的情况,被删除。
    print (name)
    
    #执行结果:
    
    ['name1', 'X1', 'X2', 'name5', 'name6', 'name7']
    name = ['name1','name2','name3','name4','name5','name6','name7']
    
    name[0:2] = ['V1','V2','V3'] #从0开始到1位,共2位要修改,多了一个V3。但是会加上去
    print (name)
    
    #执行结果:
    
    ['V1', 'V2', 'V3', 'name3', 'name4', 'name5', 'name6', 'name7']

      D.列表的排序

      D1 a.sort(),sort的用法:a.sort(cmp=None, key=None, reverse=False)

    英文解释是:

        def sort(self, *args, **kwargs): # real signature unknown
            """ Stable sort *IN PLACE*. """
            pass
    name = ['name1','name2','name3','name4','name5','Yname6','Yname7']
    
    name.sort()
    print(name)
    
    #执行结果:
    
    ['Yname6', 'Yname7', 'name1', 'name2', 'name3', 'name4', 'name5'] #按ASCII值排序

    sort()里面还有可以带reverse,

    name = ['name1','name2','name3','name4','name5','Yname6','Yname7']
    
    name.sort(reverse=True)
    print(name)
    
    #执行结果:
    
    ['name5', 'name4', 'name3', 'name2', 'name1', 'Yname7', 'Yname6']

      D2 reverse()

    name = ['name1','name2','name3','name4','name5','Yname6','Yname7']
    
    name.reverse()
    print(name)
    
    #执行结果:
    
    ['Yname7', 'Yname6', 'name5', 'name4', 'name3', 'name2', 'name1']

      E.列表的删除方法:

      E1.remove(),只能删除一个值

        def remove(self, *args, **kwargs): # real signature unknown
            """
            Remove first occurrence of value.
            
            Raises ValueError if the value is not present.
            """
            pass
    name = ['name1','name2','name3','name4','name5','Yname6','Yname7']
    
    name.remove(name[1])
    print (name)
    
    #执行结果:
    
    ['name1', 'name3', 'name4', 'name5', 'Yname6', 'Yname7']
    name = ['name1','name2','name3','name4','name5','Yname6','Yname7']
    
    name.remove('name3')
    print (name)
    
    #执行结果:
    
    ['name1', 'name2', 'name4', 'name5', 'Yname6', 'Yname7'] #'name3'被删除了
    name = ['name1','name2','name3','name4','name5','Yname6','Yname7']
    
    name.remove('name3','name4') #remove两个值看看
    print (name)
    
    ##执行结果:
    
    name.remove('name3','name4')
    TypeError: remove() takes exactly one argument (2 given) #只能一个,给了两个

      E2.pop(index),只指定位置删除

    英文的解释:

        def pop(self, *args, **kwargs): # real signature unknown
            """
            Remove and return item at index (default last). #默认删除最后一个
            
            Raises IndexError if list is empty or index is out of range.
            """
            pass
    name = ['name1','name2','name3','name4','name5','Yname6','Yname7']
    
    name.pop(5)
    print (name)
    
    
    #执行结果:
    
    ['name1', 'name2', 'name3', 'name4', 'name5', 'Yname7']
    name = ['name1','name2','name3','name4','name5','Yname6','Yname7']
    
    get = name.pop(1)
    print (get)
    
    #执行结果:
    name2
    name = ['name1','name2','name3','name4','name5','Yname6','Yname7']
    
    name.pop()  #默认删除最后一个
    print (name)
    
    #执行结果:
    
    ['name1', 'name2', 'name3', 'name4', 'name5', 'Yname6']

      E3.del 删除

    name = ['name1','name2','name3','name4','name5','Yname6','Yname7']
    del name
    name = ['name1','name2','name3','name4','name5','Yname6','Yname7']
    del name[3]
    
    print(name)
    
    #执行结果:
    
    ['name1', 'name2', 'name3', 'name5', 'Yname6', 'Yname7']

      E4.clear() 清空

    name = ['name1','name2','name3','name4','name5','Yname6','Yname7']
    name.clear()
    print(name)
    
    #执行结果:
    
    []

      F.List copy()方法

    name = ['name1','name2','name3','name4','name5','Yname6','Yname7']
    
    name2 = name.copy()
    print (name2)
    
    #执行结果:
    
    ['name1', 'name2', 'name3', 'name4', 'name5', 'Yname6', 'Yname7']

     copy 要注意的两点:

    1.0 copy()和直接=赋值的区别:

    a=[0,1,2,3,4,5]
    b=a
    c=a.copy()
    
    del a[1]  
    '''
       各变量值为:
       a=[0, 2, 3, 4, 5]
       b=[0, 2, 3, 4, 5]
       c=[0, 1, 2, 3, 4, 5]
    '''
    
    b.remove(4)
    '''
       各变量值为:
       a=[0, 2, 3, 5]
       b=[0, 2, 3, 5]
       c=[0, 1, 2, 3, 4, 5]
    '''
    
    c.append(9)
    '''
       各变量值为:
       a=[0, 2, 3, 5]
       b=[0, 2, 3, 5]
       c=[0, 1, 2, 3, 4, 5, 9]
    '''

    可以看出,使用=直接赋值,是引用赋值,更改一个,另一个同样会变, 例子中的a,b改变两次都影响到了对方

    copy() 则顾名思义,复制一个副本,原值和新复制的变量互不影响 「a,c」

    2.0 copy() 只是是浅度复制

    b = [{'name': 'soso', 'age': 23}, {'name': 'rollo', 'age': 15}]
    c = b.copy()
    del b[1]
    b[0]['age'] = 19
    print('b', b)
    print('c', c)
    
    
    #执行结果:
    
    b [{'name': 'soso', 'age': 19}]
    c [{'name': 'soso', 'age': 19}, {'name': 'rollo', 'age': 15}]]

    可以看出,copy() 只是是浅度复制,修改列表不会互相影响,但是修改列表里面的对象会影响到对方列表里面对象

  • 相关阅读:
    CF1270H. Number of Components
    NOI Online Round2划水记
    uoj#247. 【Rujia Liu's Present 7】Mysterious Space Station口胡
    mysql习题
    MySQL基础
    python网络编程(进程与多线程)
    xshell连接虚拟机Ubuntu问题
    python来写打飞机
    timeit模块
    python常用模块
  • 原文地址:https://www.cnblogs.com/rollost/p/10703324.html
Copyright © 2020-2023  润新知