注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

SanTT's Box

Working notes and some private diary

 
 
 

日志

 
 
关于我

有点懒....有点呆.....兴趣丰富.....三分热度....

网易考拉推荐

[python]列表操作  

2016-11-26 22:52:50|  分类: Python |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
常见列表

list = ['physics', 'chemistry', '123', '456']

list = [1, 2, 3, 4]

list = [[1,2], 3, 'abc']


列表的创建方式

li = []

list((1,2,3,4)) 

#原理 list.__init__. for循环(1,2,3,4)到[1,2,3,4]

列表的更新

list[1] = new_value

列表的操作

len(list) #计算列表中有几个元素

list.append() #列表后插入元素

list.count() #统计元素出现次数

list.index() #寻找元素下标

list.pop() #移除列表中的元素并取得该值

list.remove() #移除列表中的元素

枚举函数 enumerate

a = ['alex', 'jack', 'erer']


for index,i in enumerate(a):

print(index,i)

--------output--------------

(0,'alex')

(1,'jack')

(2,'erer')


数组的拷贝网上复制的

列表赋值:

>>> a = [1, 2, 3]

>>> b = a

>>> print b

[1, 2, 3]

>>> a[0] = 0

>>> print b

[0, 2, 3]

解释:[1, 2, 3]被视作一个对象,a,b均为这个对象的引用,因此,改变a[0],b也随之改变

如果希望b不改变,可以用到切片

>>> b = a[:]

>>> a[0] = 0

>>> print b

[1, 2, 3]

解释,切片a[:]会产生一个新的对象,占用一块新的内存,b指向这个新的内存区域,因此改变a所指向的对象的值,不会影响b

列表深拷贝和浅拷贝

浅拷贝

>>> import copy

>>> a = [1, 2, 3, [5, 6]]

>>> b = copy.copy(a)

>>> print b

[1, 2, 3, [5, 6]]

>>> a[3].append('c')

>>> print b

[1, 2, 3, [5, 6, 'c']]

深拷贝

>>> a = [1, 2, 3, [5, 6]]

>>> b = copy.deepcopy(a)

>>> a[3].append('c')

>>> print b

[1, 2, 3, [5, 6]]

拷贝即是开辟一块新的内存空间,把被拷贝对象中的值复制过去。而浅拷贝并没有为子对象[5,6]开辟一块新的内存空间,而仅仅是实现对a中[5,6]的引用。所以改变a中[5,6]的值,b中的值也会发生变化。

深拷贝则是为子对象也开辟了一块新空间。所以改变a中[5, 6]的值,并不影响b




  评论这张
 
阅读(10)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017