列表的主要方法/浅拷贝VS深拷贝

列表的主要方法

  1. 切片取值:
li=[1,3,5,7,9]
print(li[1:3])
输出:
[3, 5]
  1. 索引取值:
li=[1,3,5,7,9]
print(li[3])
输出:
7
  1. 判断存在,输出布尔值
li=[1,3,5,7,9]
print(11 in li)
输出:
False
  1. 向列表添加单个:添加到末尾
li=[]
for i in range(10):
    if i > 5:
        li.append(i)
print(li)
输出:
[6, 7, 8, 9]

list.extend(seq)
向列表添加多个元素:list.expand(value):value可为字符串,列表,字典

li=[1,2,3,4,1,1,1,13,3,3]
li.extend(['a','b','c'])
print(li)
#不可赋值,否则输出none 
eg: 
li=[1,2,3,4,1,1,1,13,3,3]
li2=li.extend(['a','b','c'])
print(li2)
输出:None
  1. 清空列表:list.clear
  2. 赋值,拷贝

用内存地址的方法辨析赋值,浅拷贝,深拷贝

赋值:

a=[1,2,3]
b=a
print('id a:',id(a))
print('id b:',id(b))
输出:
id a: 56195312
id b: 56195312
#内存地址是一样的,证明赋值后a和b是一个东西
a=[1,2,3]
b=a
print('id a:',id(a))
print('id b:',id(b))
#a改变 b也改变
a.append(4)
print(a,b)
输出
[1, 2, 3, 4] [1, 2, 3, 4]

浅拷贝:

a=[1,2,3,['m','n']]
b=a.copy()
print('id a:',id(a))
print('id b',id(b))
输出:
#浅拷贝a和b的外层内存地址是不一样的
id a: 47265712
id b: 56719560

print('id a[3]',id(a[3]))
print('id b[3]',id(b[3]))
输出:
#a和b的内层内存地址是一样的
id a[3] 56691688
id b[3] 56691688

#浅拷贝改变a的外层,b不会随之变化,因为他们的外层是两个独立的个体,互不影响
a=[1,2,3,['m','n']]
b=a.copy()
a[1]=8
print('a',a)
print('b',b)
#改变a的外层,b不随之变化
a [1, 8, 3, ['m', 'n']]
b [1, 2, 3, ['m', 'n']]

#改变a的内层,b会随之变化,因为浅拷贝后ab的内层在一个内存地址里
a=[1,2,3,['m','n']]
b=a.copy()
a[3][0]='k' #改变a的内层
print('a',a)
print('b',b)
输出:
a [1, 2, 3, ['k', 'n']]
b [1, 2, 3, ['k', 'n']]

深拷贝:需要引入copy模块
与浅拷贝的区别是:深拷贝后,ab的内层地址和外层地址都不一样,任意一个变化不会意向另一个

总结:
赋值:b=a, 赋值后ab内存地址一样,任意一个变化,另一个随之变化

浅拷贝:b=a.copy(), 浅拷贝后,ab外层内存地址不一样,任意一个外层变化不会影响另一个。浅拷贝后,ab内层内存地址一样,任意一个内层变化会影响另一个。

深拷贝:import copy b=copy.deepcopy(a) 深拷贝后,ab的内层外层内存地址都不一样,相互独立,任意一个变化不会影响第二个

  1. Count 计算元素出现的次数 list.count(‘value’)
li=[1,2,3,4,1,1,1,13,3,3]
print(li.count(3))
输出:
3
  1. list.remove(‘value’) 从列表中删除值:只能删除一个value
li=[1,2,3,4,1,1,1,13,3,3]
li.remove(3)
print(li)
输出:
[1, 2, 4, 1, 1, 1, 13, 3, 3]
  1. list.reverse():将当前表翻转
li=[1,2,3,4,5]
li.reverse()
print(li)
输出:
[5, 4, 3, 2, 1]
  1. list.sort()
#默认升序
li=[1,7,9,4,5]
li.sort()
print(li)
输出:
[1, 4, 5, 7, 9]

#降序:添加关键字 reverse=1/True
li=[1,7,9,4,5]
li.sort(reverse=1)
print(li)
输出:
[9, 7, 5, 4, 1]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值