m1n9yu3-博客园

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)
posted @ 2020-06-05 20:58  m1n9yu3  阅读(82)  评论(0编辑  收藏  举报