• python学习DAY3(列表)


    今天所学知识主要是列表,其大概操作以及含义和CC++等编程语言的数组很类似,记住一些常用的函数格式就行了

    一:列表

    names=["aaa","bbb","ccc","ddd"]              //类似于C++中的数组
    print(name) 
    print(names[0])                              //取出第一个元素

    列表一些较为常用的操作函数

    #切片
    print(names[1:3])                            #注意冒号
    '''取出第二个元素和第三个元素!注意,取出元素在原列表的标记类似于数组下标
    如果要取出2个数据如'bbb','ccc',则右括号应该写'ccc'的下一个元素'ddd',小记为区间左闭右开'''
    print(names[-1])             //未知长度情况下取出最后的元素'ddd'
    print(names[-3:])          //取出后面3个元素,注意:后不填写
    #添加数据
    1.往列表末尾插入
    names.append("eee")
    ------引申
    【 Author:barry allen
    names=[("aaa",1)] #子列表
    tem=names[0]
    name_list=[]
    name_list.append(tem) #注意,tem依旧是以("aaa",1)为整体传入到name_list中
    print(name_list)
    2.规定位置插入(位置类似于数组下标)(不可批量插入) 如插入到'bbb’当前位置 names.insert(1,"xxx")
    #修改数据'ddd'改为xxx
    names[3]="xxx"
    #删除数据
    1.删除'xxx'
    names.remove("xxx")
    2.删除指定位置
    (1)删除第二个数据'bbb'(下标为1)
    del names[1]
    (2)
    names.pop()   #默认是删除最后一个元素
    names.pop(1)  #删除第二个数据'bbb'(下标为1)
    #查找指定元素并返回其下标位置于屏幕
    print(names.index("bbb"))
    ---返回位置加元素print(names[names.index("bbb")])
    #输出整个列表并返回其下标
    1.for i in names
    print(names.index(i),names)
    2.for index,data in enumerate(names): #index为下标,data为列表元素
    print(index,data)
    #统计指定元素个数
    print(names.count("bbb"))
    #清空
    names.clear()
    print(names)
    #反转
    names.reverse()
    #排序(按ASCll码排序)
    names.sort()
    #合并
    names2=["1","2","3","4"]
    names.extend(names2)     #names2合并在names后面,且names不会删除,相当于复制一份自己的资料给names
    #删除变量
    del names
    #元祖
    只创建不能修改,即只读列表,操作只有count 和 index两种
    test=("aaa","bbb","ccc")#注意!是小括号
    #列表循环
    for i in names:        
       print(i)        #此输出到屏幕上是每一行输出一个元素,而input(names)则是在一行中输出所有元素
    #隔断(切片打印)如for循环中的range(0,10,2)
    print(names[1:3:2])    #从下标为1到3(不包括3)每隔2个元素打印一个
    print(names[0:-1:2])   #从开始到结束每隔2个元素打印
    print(names[::2])      #省略0和-1的简便写法
    #计算列表的长度
    print(len(names))

    二:子列表以及copy的相关知识(浅、深copy)

    #子列表copy
    names=["aaa","bbb",["111","222"],"ccc","ddd"]
    print(names)
    
    names2=names.copy()
    print(names)
    print(names2)
    names[3]="xxx"      #此时的子列表整体化为names列表的一个元素
    #print(names[2][0])   #输出子列表的写法:第一个[]为子列表在列表的位置,第二个[]为想要输出子列表的元素的位置
    names2[2][1]="333"
    print(names)
    print(names2)          
    import copy
    names2=names.copy()               '''注!两个copy的结果是不一样的,先复制过来,然后names修改非子列表的元素时,names2的元素不会改变。但是修改子列表中的元素时
    此时names2的子列表同样会被修改。即:复制时,可以简单比喻为,子列表是一块临界资源,而非子列表的names,names2是两个完全独立的内存互不影响''' names2=copy.deepcopy(names) #完全独立地克隆,但会开辟两个完全独立的内存,即使names修改了names2依旧和修改前的元素一样
    #------引申
    #3种浅copy的方法
    names2=copy.copy(names)
    names2=names[:]
    names2=list(names)
    #浅copy的用处在于,比方说有两个人共享一张银行卡,如果里面存款变动了,那么两个人的银行卡信息随之做同种改变,即联合账号。
  • 相关阅读:
    AGC023C Painting Machines
    LG3834 可持久化线段树1
    又是一天
    ARC103F Distance Sums
    CF1053E Euler tour
    UOJ22 外星人
    洛谷4248 AHOI2013差异 (后缀数组SA+单调栈)
    洛谷2408不同字串个数/SPOJ 694/705 (后缀数组SA)
    CF49E Common ancestor(dp+dp+dp)
    洛谷4051 JSOI2007 字符加密(SA)
  • 原文地址:https://www.cnblogs.com/god-for-speed/p/10848302.html
Copyright © 2020-2023  润新知