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

[经验分享] Python list 数据类型:列表

[复制链接]

尚未签到

发表于 2015-4-20 06:10:24 | 显示全部楼层 |阅读模式
  列表与字典(还没接触到)是Python中两个主要的数据类型。他们可以被修改,可以增长可以缩短,也可以嵌套。
  列表   list
  列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)。
  Python 的列表与C语言中的数组访问方法相同,通过偏移地址访问。
  下面举几个列表的例子,图片来自《Python学习手册(第三版)》
DSC0000.png
  为了加速进度以及方便查询,我们看一下对列表常用操作的整理,图片来自《Python学习手册(第三版)》
DSC0001.png
  现在我们详细讲一下几个list的操作。
  首先我们明确,Python的list可以容纳任何对象。不管他是什么格式的。
  1)创建list
  创建列表的操作非常简单,只要用中括号报过一系列逗号分隔的值就可以了。就像第一个图片上那样。
  2)list 切片
  定义新列表后,我们可以列表中的任何一个部分作为新的列表,该技术在dive in python 中称为切片。
  让我们直接看程序。
  
a_list =['a','b','c','d','e','f']    # 创建一个列表
print a_list[1:3]                   # 在屏幕上打印一个切片
  值得注意的是,在list偏移访问中,与C中数组类似,同样用a_list[0]表示列表第一项。
  上面的程序我们得到了如下的结果:
DSC0002.png
b c 分别是列表中第二,第三个元素,序号应该是1 和2 ,可以看出,对于 a_list[x,y] 的切片,切片片段为序号x到y-1之间的内容。
  我们也可以截取半段,让我们看程序



# 位置     1   2   3   4   5   6
# 序号     0   1   2   3   4   5
a_list =['a','b','c','d','e','f']   #                  定义
print a_list[:3]                                   
print a_list[3:]
DSC0003.png
  从结果中我们可以看出,第一个片段[:3] 取的是从第一位到第三位的片段,而[3:] 获取的是从第四位,到结尾的片段。
  无论列表多长[:n]片段中总含有n个元素。
  如果将x,y都留空,那么程序将取列表内全部的元素,但是却获得了一个新的列表。
  如果x , y中有负数怎么办,让我们来看一下



# 位置     1   2   3   4   5   6
# 序号     0   1   2   3   4   5
a_list =['a','b','c','d','e','f']   
print a_list[-1:3]                    
print a_list[3:-1]
DSC0004.png
  第一个print输出了空的list, 第二个却输出了两个。 认真看我们可以看出,负数是指从右往左数,正数是指,从左往右。
  3)向列表list中添加元素
  从第三题中,我们认识到append可以向list中添加元素。



a_list.append('NEW')
  让我们测试一下这句话.



# 位置     1   2   3   4   5   6
# 序号     0   1   2   3   4   5
a_list =['a','b','c','d','e','f']
a_list.append('NEW')
print a_list
DSC0005.png
  字符串 NEW 已经被添加到该列表结尾处了.
  当然除了append 这种只能在末尾添加 元素 的操作来说,我们还要插入操作



a_list.insert( n,35434)
  insert 后面有两个操作符, 那么n表示插入哪个元素之后, 那串数表示插入什么东西,当然任何类型的都可以,让我们试一下这个新认识的方法.



# 位置     1   2   3   4   5   6
# 序号     0   1   2   3   4   5
a_list =['a','b','c','d','e','f']
a_list.insert(2,'NEW')
print a_list
a_list.insert(6,43223452)
print a_list
DSC0006.png   可以看到,插入位置是n号元素之前。
  这两种操作都是单个元素插入,当我们需要将大量数据放在列表末尾的时候,我们就需要另一个新的方法了。



a_list.extend( [ 'fdaf',342 ] )
  看一下例子就好了.



# 位置     1   2   3   4   5   6
# 序号     0   1   2   3   4   5
a_list =['a','b','c','d','e','f']
a_list.extend( [ 'fdaf',342 ] )
print a_list
DSC0007.png
  当然我们还有更简单的在末尾扩增list的方法.



+
  没错,就是一个符号.



# 位置     1   2   3   4   5   6
# 序号     0   1   2   3   4   5
a_list =['a','b','c','d','e','f']
a_list+=[ 'fdaf',342 ]
print a_list
DSC0008.png
  看,我们得到了相同的结果!
  4)在列表中查询
  在C语言中,遍历数组什么的是常见的问题,我们需要知道,数组中有没有某个元素,某个元素在数组中的什么位置,某个元素在数组中出现的次数 等等等。这些也许在C中需要长篇累牍的描述算法,但是Python丰富的库资源已经把这些问题解决了。让我们看看下面的表吧:



a_list.count(  'NEW' )     #计算出现次数
a_list.index( 'NEW' )        #寻找第一次出现的位置
'NEW' in a_list        #确认元素是否出现在list中
  现在我们测试一下这几种功能。



# 位置     1   2   3   4   5   6
# 序号     0   1   2   3   4   5
a_list =['a','b','c','d','e','f']
print a_list.count(  'NEW' )     #计算出现次数
print 'NEW' in a_list        #确认元素是否出现在list中
DSC0009.png
  我们没有测试index,因为index 有个比较有趣的现象,让我们来试一下。



# 位置     1   2   3   4   5   6    7
# 序号     0   1   2   3   4   5    6
a_list =['a','b','c','d','e','f','NEW']
print a_list.index(  'NEW' )
DSC00010.png
  list中存在NEW,返回了正确的值。如果没有NEW会怎么样的呢



# 位置     1   2   3   4   5   6
# 序号     0   1   2   3   4   5
a_list =['a','b','c','d','e','f']
print a_list.index(  'NEW' )

  竟然提示错误,当然,这个就是引发了一个异常。之后我们会渐渐认识到这个做法的好处。
  5)从列表中删除元素
  既然我们插入了元素,那么我们也可以删除他,但是,元素的插入与删除并不像C语言那么麻烦,删除操作是如此的简单,大家看下例子就会了。
  当我们知道元素的确切位置的时候,我们使用



del a_list[n]
  当我们不知道位置,而是知道删除什么的时候,使用:



a_list.remove(    )
  与求元素准确位置一样,如果删除一个list中不存在的元素会引发程序错误。
  最后我们确认一点,空列表的布尔值为False,其他的列表均为Ture。

运维网声明 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.yunweiku.com/thread-58577-1-1.html 上篇帖子: Python模拟登陆新浪微博 下篇帖子: 从C#到Python —— 2 运算符、表达式和流程控制
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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