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

[经验分享] 【Python 3这件小事】2.内置数据类型(二)——列表和元组

[复制链接]

尚未签到

发表于 2015-4-27 07:12:33 | 显示全部楼层 |阅读模式
  (接上文)
  2.4 列表
  Python 中的列表更像 Java 中的数组(尽管可以把列表当做生命中所需要的一切来使用)。一个更好的比喻可能是 ArrayList 类,该类可以容纳任何对象,并可在添加新元素时进行动态拓展。
  在布尔类型上下文环境中,空列表为假值。任何至少包含一个以上元素的列表为真值。
  
  2.4.1 创建列表
  1.列表是元素的有序集合,用【】将各个元素括起来。
  2.列表的首个元素为list[0]。
  3.使用负索引值可从列表的尾部向前计数访问元素。如list[-1]就表示列表的倒数第一个元素。
  4.如果负数令你混淆,可将其视为如下方式: a_list[-n] == a_list[len(a_list) - n] 。因此在此列表中, a_list[-3] == a_list[5 - 3] == a_list[2]。
  
  2.4.2 列表切片
  1.通过指定两个索引值,可以从列表中获取称作“切片”的某个部分。返回值是一个新列表,它包含列表中所有元素,按顺序从第一个切片索引开始(本例中为 a_list[1]),截止但不包含第二个切片索引。换句话说,第二个索引值是第一个不想到达的索引。
  2.如果左切片索引为零,可以将其留空而将零隐去。因此 a_list[:3] 与 a_list[0:3] 是完全相同的,因为起点 0 被隐去了。
  3.如果两个切片索引都留空,那么将包括列表所有的元素。但该返回值与最初的 a_list 变量并不一样。它是一个新列表,只不过恰好拥有完全相同的元素而已。a_list[:] 是对列表进行复制的一条捷径。
  
  2.4.3 向列表中新增项
  有四种方法可以完成向列表中新增项的工作:
  1.+ 运算符: 连接列表以创建一个新列表。列表可包含任何数量的元素;没有大小限制(除了可用内存的限制)。
  2.append() 方法:向列表的尾部添加一个新的元素。
  3.extend() 方法:只接受一个列表作为参数,并将该参数的每个元素都添加到原有的列表中。
  4.insert() 方法:将单个元素插入到列表中。第一个参数是列表中将被顶离原位的第一个元素的位置索引。如:a_list.insert(0,'Ω')  
  
  注意:
  1.列表中的元素并不一定要是唯一的
  2.append()方法和extend()方法的区别:append方法接受的参数可以是任意类型,并把这个接受的参数当作一个元素插入到列表中,extend方法接受的参数必须是列表,并且将参数列表中的每个元素添加到原来的列表中去,这就是“加入”和“扩展”的区别。
  
  2.4.4 在列表中检索值
    1. count() 方法:返回了列表中某个特定值出现的次数。
    2.in 运算符:判断某个值是否在列表中出现,返回 True 或 False;它不会告诉你该值出现在什么位置。
    3. index() 方法:返回某个值在列表中的精确位置。尽管可以通过第二个参数(以 0 为基点的)索引值来指定起点,通过第三个参数(以 0 基点的)索引来指定搜索终点,但缺省情况下它将搜索整个列表。
  4.index() 方法将查找某值在列表中的第一次出现。在该情况下,'new' 在列表中出现了两次,分别为 a_list[2] 和 a_list[4],但 index() 方法将只返回第一次出现的位置索引值。
  5.如果在列表中没有找到该值,index() 方法将会引发一个例外。有别于其他的一些语言(如Java),它不会返回一个值如-1.
  
  2.4.5 从列表中删除元素
  也有几种方法可从列表中删除元素。
    1.del语句:可使用 del 语句从列表中删除某个特定元素。如:del list[1]。删除索引 1 之后再访问索引 1 将 不会 导致错误。被删除元素之后的所有元素将移动它们的位置以“填补”被删除元素所产生的“缝隙”。
    2.remove() 方法:通过值而不是索引删除元素(del 语句通过索引,remove方法通过值)。remove() 方法接受一个 value 参数,并删除列表中该值的第一次出现
    3.pop():如果不带参数调用, pop() 列表方法将删除列表中最后的元素,并返回所删除的值。相当于出栈操作。可以从列表中 pop[弹出]任何元素。只需传给 pop() 方法一个位置索引值。对空列表调用 pop() 将会引发一个例外。
  
  2.5 元组
  元组不可变的列表。一旦创建之后,用任何方法都不可以修改元素。
  在布尔类型上下文环境中,空元组为假值。任何至少包含一个上元素的元组为真值。元素的值无关紧要。
    1.元组的定义方式和列表相同,除了整个元素的集合都用圆括号(),而不是方括号【】闭合。对比列表和元组:【】和()。
    2.元组和列表的主要区别是元组不能进行修改。其余的如index、切片等操作都是一致的。
  
  那么元组有什么好处呢?


  • 元组的速度比列表更快。如果定义了一系列常量值,而所需做的仅是对它进行遍历,那么请使用元组替代列表。
  • 对不需要改变的数据进行“写保护”将使得代码更加安全。使用元组替代列表就像是有一条隐含的 assert 语句显示该数据是常量,特别的想法(及特别的功能)必须重写。
  • 一些元组可用作字典键(特别是包含字符串、数值和其它元组这样的不可变数据的元组)。列表永远不能当做字典键使用,因为列表不是不可变的。
  
  元组的特殊操作:同时赋多个值



>>> v = ('a', 2, True)
>>> (x, y, z) = v      
>>> x
'a'
>>> y
2
>>> z
True
  v 是一个三元素的元组,而 (x, y, z) 是包含三个变量的元组。将其中一个赋值给另一个将会把 v 中的每个值按顺序赋值给每一个变量。
  
  

运维网声明 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-60913-1-1.html 上篇帖子: Python 初学者必知:Python 运行与开发环境 下篇帖子: [zz]Python 使用 UTF-8 编码 & Defining Python Source Code Encodings
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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