zoukankan      html  css  js  c++  java
  • python学习_005

    列表深浅拷贝 删除 反转 排序

    拷贝

    • copy 方法 可以拷贝一个列表

    列表里面的列表,并不会跟着改变,也就是说,它是浅拷贝(影子拷贝),遇到引用类型时,只能复制一个地址而已

    • 深拷贝的实现:

    引用copy 模块 使用里面的 deepcopy 就可以完成深拷贝

    from copy import *
    l3=deepcopy(l1)
    print(l1,l3)
    l3[2][0]="被更改"
    print(l1,l3)
    
    • 使用 * 号,复制出来的列表,实际上也是一种浅拷贝

      可以看到,他们的地址是一样的

    删除

    • remove(值)

    找到第一个相等的元素,移除,返回None 如果没有找到符合条件的值,抛出异常 需要进行遍历

    • pop(index)

    利用索引,找元素,将找到的元素返回, 如果索引不正确,会抛出indexError 异常 index在尾部为O(1) 在首部为O(n)

    • clear() 返回None

    清除列表里面的所有元素,仅仅只是引用计数-1,并不确定会不会触发回收机制,这个方法和 直接将 长度 置1是一个效果,所以clear 效率还行

    反转

    • reverse() 返回值为None
    l1=list(range(9))
    l1.reverse()  #反转
    print(l1)
    

    将列表反转, 就地修改,效率不高 使用负索引,倒着读,也可以实现同样的效果

    • 使用负索引反转列表
    l1=list(range(9))
    l2=l1[::-1]  #反转
    print(l2)
    

    排序

    • sort(key=None,reverser=False) 返回值为None

    对列表进行排序,默认为升序
    当reverse=True 时,为降序
    key 可以指定,以什么类型进行排序 不指定时,为int

    将列表种所有的元素,转换成指定类型,如果转换失败,就抛出异常,仅仅转换,但不影响元素本身

    l1=[2,1,3,6,4,5,9,7,8]
    l1.sort()  #升序,以int 类型进行排序
    print(l1)
    
    l1=[2,1,3,6,4,5,9,7,8]
    l1.sort(reverse=True)
    print(l1)
    
    l1=[2,1,3,6,4,5,9,7,8]
    l1.append("8")    #尝试转换成数字,进行排序
    l1.sort(key=int)
    print(l1)
    
    l1=[2,1,3,6,4,5,9,7,8]
    l1.append("a")
    l1.sort(key=str)  #使用ascii 码形式,进行排序
    print(l1)
    

    补充

    • in

    判断某个元素是否在列表中,没有就返回false 有即返回true
    值 in 列表

    print(type(1 in l1))
    print(1 in l1)
    
  • 相关阅读:
    hust 1260 Dominos && hust 1516 Dominos
    poj 1149 PIGS
    hust 1230 beautiful
    poj 1469 COURSES
    hdu 3062 Party
    hust 1027 Enemy Target!
    hdu 3415 Max Sum of Max-K-sub-sequence
    简单的实现轮播代码
    window.parent与window.openner区别介绍
    plupload使用指南(转)
  • 原文地址:https://www.cnblogs.com/shenshuoyaoyouguang/p/13052290.html
Copyright © 2011-2022 走看看