设为首页 收藏本站
查看: 1076|回复: 0

[经验分享] python中的列表操作

[复制链接]
发表于 2018-8-4 08:01:42 | 显示全部楼层 |阅读模式
  列表:(list)
  容器类型:某个对象包含对其它对象的引用,则将其称为容器。
  列表可以包含任何种类的对象(数字、字串、甚至嵌套其他列表,可以嵌套元组)
  内部包含:任意对象的有序集合,通过索引访问其中的元素,可变对象,支持异构(包含多种不同的元素),任意嵌套
  

支持在原处修改:  列表的可变表现为:其内部的每一个元素,存储在列表中不是对象本身,而是对象的引用,其修改其实是修改的引用,而不是真正的修改了内部的某个对象。
  

  使用[]创建列表
  

  >> list1 = ["This","is","a","pig"]
  >> print list1[0]
  This
  >> print list1[0][0]
  T

  列表和元组并不真正存储数据而是存放的对象引用!
  解释:
  ["this","is","a","pig"]
  这里并不是存放了"this",而是在内存中找个了地方存放的"this",只是把"this"的存储的位置存放在这个列表当中。
DSC0000.jpg

  ---列表的异构:
  In [2]: list = [1,'b']
  In [3]: print list
  [1, 'b']
  ---嵌套的列表:
  In [6]: list2 = [[1,2],['a','b']]
  In [7]: print list2
  [[1, 2], ['a', 'b']]
  ---列表的修改
  In [11]: list2 = [1,2,3,4,5]
  In [12]: print list2
  [1, 2, 3, 4, 5]
  In [13]: list2[1] = 888
  In [14]: print list2
  [1, 888, 3, 4, 5]
  ---删除指定的元素
  In [15]: list2
  Out[15]: [1, 888, 3, 4, 5]
  In [16]: del(list2[1:])
  In [17]: print list2
  [1]
  ---新增一个元素(append方法) 在最后指定附件元素
  In [19]: list2 = [1,2,3,4]
  In [20]: print list2
  [1, 2, 3, 4]
  In [21]: list2.append(5)
  In [22]: print list2
  [1, 2, 3, 4, 5]
  能不能附加多个元素?附加一个列表进来
  In [30]: print list2
  [1, 2, 3, 4, 5]
  In [31]: list3 = ['x','y','z']
  In [32]: list2.append(list3)
  In [33]: print list2
  [1, 2, 3, 4, 5, ['x', 'y', 'z']]
  注意:这里是把这个列表当作一个元素附加进来的。
  ---extend 方法
  extend list by appending elements from the iterable
  通过附加迭代元素来扩展列表
  In [37]: list1 = [1,2,3,4]
  In [38]: list2 = ['x','y','z']
  In [39]: list1.extend(list2)
  In [40]: print list1
  [1, 2, 3, 4, 'x', 'y', 'z']
  是把两个列表合并在一起了
  ---index方法(返回字符,第一次出现的索引编号)
  In [45]: list1 = [1,2,1,3,3,2]
  In [46]: list1.index(2)
  Out[46]: 1
  --- insert 方法(在指定的元素前面添加元素)
  In [49]: list = [1,2,3,4,5]
  In [50]: list.insert(2,'xyz')
  In [51]: print list
  [1, 2, 'xyz', 3, 4, 5]
  ---pop方法(弹出列表中的元素,默认是最后一个元素,按照索引删除,而remove是按照值删除的)
  In [57]: list
  Out[57]: [1, 2, 'xyz', 3, 4]
  In [58]: list.pop()
  Out[58]: 4
  In [59]: list.pop()
  Out[59]: 3
  In [60]: list
  Out[60]: [1, 2, 'xyz']
  ----remove 方法 (删除列表中指定的元素,安装值来删除)
  In [62]: list = [1,2,3,4,5]
  In [63]: list.remove(3)
  In [64]: print list
  [1, 2, 4, 5]
  * 列表相加会有什么效果呢? ***
  list1 + list2:合并两个列表,生产一个新列表,原列表不会改变
  list1 * N :重复list1 N次,生产新列表

  >> list1 = [1,2,3]
  >> list2 = ['x','y','z']
  >> list1 + list2
  [1, 2, 3, 'x', 'y', 'z']          ----> 返回了新的列表
  >> print list1
  [1, 2, 3]
  >> print list2
  ['x', 'y', 'z']
  >> list1
  [1, 2, 3]
  >> list1 * 3
  [1, 2, 3, 1, 2, 3, 1, 2, 3]

  in 操作符:成员关系判断符
  判断一个元素,是不是在一个列表当中,在返回true,否则返回false  用法:item in container
  not in  也类似

  >> list1
  [1, 2, 3]
  >> 2 in list1
  True
  >> 'x' in list1
  False

  在切片级别的修改替换的是元素

  >> list1
  [1, 2, 3]
  >> list1[1:]
  [2, 3]
  >> list1[1:] = ['x','y','z']
  >> list1
  [1, 'x', 'y', 'z']

  ***** 列表的复制 ****
  (1)轻度copy

  >> list1 = [1,2,3]
  >> list2 = list1
  >> list1.append(4)
  >> print list1
  [1, 2, 3, 4]
  >> print list2
  [1, 2, 3, 4]

  为什么会出现这种情况?
  因为它们指向了同一个内存对象,不是真正执行了复制


  >>>  140325613007360

  >>>  140325613007360
  >>

  (2)  使用list[:] 方式复制列表

  >> list1 = [1,2,3,4]
  >> list3 = list1[:]
  >> print list3
  [1, 2, 3, 4]
  >> list1.append(5)
  >> print list1
  [1, 2, 3, 4, 5]
  >> print list3
  [1, 2, 3, 4]

  >>>  140325612904744

  >>>  140325613007648

  (3)通过内置库copy复制列表
  import copy
  copy.deepcopy
  Deep copy operation on arbitrary Python objects.
  对任意Python对象进行深度复制操作。

  >> list1
  [1, 2, 3, 4, 5]
  >> import copy
  >> list1
  [1, 2, 3, 4, 5]

  >>>  140325612904744
  >> list2 = copy.deepcopy(list1)
  >> print list2
  [1, 2, 3, 4, 5]

  >>>  140325613030936


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-546182-1-1.html 上篇帖子: python起步 下篇帖子: 【19】Python工资管理系统
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表