• Python—列表操作


    列表

    列表的使用:

    列表是可变数据类型,因此列表的方法,都是直接修改列表原始值

    list = ["panda","chimpanzee","zebra","lion","cat"]

    (1)通过下标访问列表中的元素,下标从0开始计数

    1 >>> list[0]
    2 'panda'
    3 >>> list[2]
    4 'zebra'
    5 >>> list[-1]  倒着访问,下标从【-1】开始
    6 'cat'
    7 >>> list[-5]
    8 'panda'

    (2)切片  list = ["panda","chimpanzee","zebra","lion","cat"]

     1 >>> list[1:4]
     2 ['chimpanzee', 'zebra', 'lion']   #顾头不顾尾
     3 >>> list[1:-1]
     4 ['chimpanzee', 'zebra', 'lion']   #顾头不顾尾,下标【1】为'chimpanzee',【-1】为从右边数第一个
     5 >>> list[0:3]
     6 ['panda', 'chimpanzee', 'zebra']  #0表示从第一个开始取
     7 >>> list[:3]
     8 ['panda', 'chimpanzee', 'zebra']  #从第一个开始取也可以为空表示
     9 >>> list[3:]                      
    10 ['lion', 'cat']                   #从下标【3】取到最后一个,包括最后一个
    11 >>> list[3:-1]                    
    12 ['lion']
    13 >>> list[0::2]
    14 ['panda', 'zebra', 'cat']         #此处的2表示,每隔一个元素,取一个    
    15 >>> list[::2]
    16 ['panda', 'zebra', 'cat']
    17 >>> list[2:2]     ------ []       #此处取值为空
    list[:] 对list全部切片,可以起到复制的作用,同时 list[:]也可以使用list所有的方法

    (2)列表的常用操作

    追加:append()加到列表最尾

    1 >>> zoo
    2 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone']
    3 >>> zoo.append("追加")
    4 >>> zoo
    5 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', '追加']
    6 >>> 
    View Code

    插入: 想插入哪里,下标就写哪里

    1 zoo
    2 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', '追加']
    3 >>> zoo.insert(1,"从chimpanz前插入")
    4 >>> zoo
    5 ['panda', '从chimpanz前插入', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', '追加']
    6 >>> zoo.insert(4,"从lion前插入")
    7 >>> zoo
    8 ['panda', '从chimpanz前插入', 'chimpanzee', 'zebra', '从lion前插入', 'lion', 'cat', 'newone', '追加']
    9 >>> 
    View Code

    修改:

    1 >>> zoo
    2 ['panda', '从chimpanz前插入', 'chimpanzee', 'zebra', '从lion前插入', 'lion', 'cat', 'newone', '追加']
    3 >>> zoo[1]="换成gorilla"
    4 >>> zoo
    5 ['panda', '换成gorilla', 'chimpanzee', 'zebra', '从lion前插入', 'lion', 'cat', 'newone', '追加']
    6 >>> 
    View Code

    删除:(有三种删除方式 del ,remove【删除指定元素,如果有多个,取列表的第一个匹配项】,pop【如果不输入下标,默认删除最后一个】)

     1 >>> del zoo[1]
     2 >>> zoo
     3 ['panda', 'chimpanzee', 'zebra', '从lion前插入', 'lion', 'cat', 'newone', '追加']
     4 >>> zoo.remove("从lion前插入")
     5 >>> zoo
     6 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', '追加']
     7 >>> zoo.pop()   #删除列表最后一个值
     8 '追加'
     9 >>> zoo
    10 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone']
    11 >>> 
    View Code

    #pop虽然是删除,不过会获取每一个被删除的元素,list2.append(list.pop()) ,从而达到list删除,list2增加的目的

    扩展:

    1 >>> zoo
    2 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone']
    3 >>> b=[1,2,3]
    4 >>> zoo.extend(b)
    5 >>> zoo
    6 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', 1, 2, 3]
    7 >>> 
    View Code

    统计:

    1 >>> zoo
    2 ['panda', 'chimpanzee', 'zebra', 'lion', 'cat', 'newone', 1, 2, 3]
    3 >>> zoo.count("newone")    #统计列表中有多少个【newone】
    4 1                   
    5 >>> 
    View Code

    排序和反转: 其中排序是按照ASCII码顺序进行排序

     1 >>> zoo.sort()
     2 Traceback (most recent call last):  #python3中 int和str不能排序
     3   File "<pyshell#45>", line 1, in <module>
     4     zoo.sort()
     5 TypeError: '<' not supported between instances of 'int' and 'str'
     6 >>> zoo[-1]="3"             #修改
     7 >>> zoo[-2]="2"
     8 >>> zoo[-3]="1"
     9 >>> zoo
    10 ['cat', 'chimpanzee', 'lion', 'newone', 'panda', 'zebra', '1', '2', '3']
    11 >>> zoo.sort()                 #排序
    12 >>> zoo
    13 ['1', '2', '3', 'cat', 'chimpanzee', 'lion', 'newone', 'panda', 'zebra']
    14 >>> zoo.reverse()            #反转
    15 >>> zoo
    16 ['zebra', 'panda', 'newone', 'lion', 'chimpanzee', 'cat', '3', '2', '1']
    17 >>> 
    View Code 
    """
    有一个列表[11, 2, 3, 3, 7, 9, 11, 2, 3],去重并且保持原来的顺序.
    """
    l1 = [11, 2, 3, 3, 7, 9, 11, 2, 3]
    ret = list(set(l1))
    print(ret)
    ret.sort(key=l1.index)  # 按值在l1中的索引进行排序
    print(ret)
    
    l2 = [
        {"name": "alex", "age": 36},
        {"name": "GoldBoss", "age": 30},
        {"name": "xiaoyima", "age": 18}
    ]
    # 课后作业
    l2.sort(key=lambda x: x["age"])
    print(l2)
    sort(key=lst.index)

    获取下标:

    1 >>> zoo
    2 ['zebra', 'panda', 'newone', 'lion', 'chimpanzee', 'cat', '3', '2', '1']
    3 >>> zoo.index("panda")
    4 1
    5 >>> 

    清空:

    zoo.clear()  #清空列表
    

    复制:浅copy

     1 >>> zoo2222 = zoo.copy() #复制
     2 >>> zoo2222
     3 ['zebra', 'panda', 'newone', 'lion', 'chimpanzee', 'cat']
     4 >>> zoo[0]="dog"
     5 >>> zoo
     6 ['dog', 'panda', 'newone', 'lion', 'chimpanzee', 'cat']
     7 >>> zoo2222
     8 ['zebra', 'panda', 'newone', 'lion', 'chimpanzee', 'cat']
     9 >>> 
    10 
    11 此时修改了zoo的一个元素,zoo2222不会一起改
    12 但这只是浅copy,只复制了第一层
    13 
    14 当zoo的元素中包含了列表,修改改聊表中的值,zoo2也会一起修改
    15 >>> zoo
    16 ['dog', 'panda', 'newone', 'lion', 'chimpanzee', 'cat', ['peter', 'tony']]
    17 >>> zoo2 = zoo.copy()
    18 >>> zoo2
    19 ['dog', 'panda', 'newone', 'lion', 'chimpanzee', 'cat', ['peter', 'tony']]
    20 >>> zoo[6][0]="PETER"
    21 >>> zoo2
    22 ['dog', 'panda', 'newone', 'lion', 'chimpanzee', 'cat', ['PETER', 'tony']]
    23 >>> 
    24 
    25 另外:
    26 list = list2
    27 此时与 str = str2 不同,
    28 此时的list相当于只向list2的内存地址,list2修改,list也会跟着一起修改
    View Code

     若要进行深copy:copy模块中copy还是浅copy,deep copy才是深copy

    1 1 import copy
    2 2 zoo3 = copy.deepcopy(zoo)
    3 3 #此时修改zoo,不管zoo中是否包含列表,zoo3都不会影响。
    View Code

    小结,列表用到的函数有:append,insert,extend,pop,remove,clear,index,count,reverse,sort,copy

    元组(tuple)

    只可查列表,只能查

    可用函数只有 count,index 

     http://www.runoob.com/python3/python3-tuple.html

    >>> a = (1,2,3)
    >>> b = (5,6,7)
    >>> a+b
    (1, 2, 3, 5, 6, 7)
    >>> c = (5,6,8)
    >>> b+c
    (5, 6, 7, 5, 6, 8)
    >>> 
  • 相关阅读:
    c读取文本文档
    java类中定义接口
    android selector
    android listview
    android继承Dialog实现自定义对话框
    移植net-snmp到开发板(mini210)
    [BZOJ1901]Zju2112 Dynamic Rankings
    [BZOJ3524][Poi2014]Couriers
    [codeforces722D]Generating Sets
    [codeforces722C]Destroying Array
  • 原文地址:https://www.cnblogs.com/gkx0731/p/9408516.html
Copyright © 2020-2023  润新知