标签:dex 不可变 利用 code 修改 逗号 元素 不可 shel
元组,在python中用tuple表示,它与列表有些类似,可以储存数据,相较于列表的可以修改、增添元素的特性,元组一旦形成便不可以修改,就像是不可以改变的列表。
1.创建一个tuple,list的标志是一对中括号,而元组则是一对小括号
>>> t = () ;; 创建一个空元组 >>> type(t) ;; type函数用来判断括号内对象的类型 <class ‘tuple‘> >>> t = (1) ;; 如果添加了元素,那么必须要有小写英文逗号,才能被判定为元组 >>> type(t) <class ‘int‘> ;; 方法1 >>> t = (1,) >>> type(t) <class ‘tuple‘> ;; 方法2 >>> t = 1, ;; 没有小括号也可以,只要有逗号,也可以判定为元组 >>> type(t) <class ‘tuple‘> >>> t = 1, 2, 3, 4 >>> t (1, 2, 3, 4) >>> t = "5", 5, -5 ;; 添加一个有字符串、整数元素的元组 >>> t (‘5‘, 5, -5)
2.列表和元组
Jake有两个书架,一个书架上摆满了文学书,假设这个书架是一个列表;一个则摆满了英语书,设这个是一个元组。
;; 文学书架上现在有: >>> l = ["one", 1, 0.5] >>> l ;; 书架上有三本书 [‘one‘, 1, 0.5] >>> l[0] = "two" ;; Jake可以随意改变书架上的书 >>> l [‘two‘, 1, 0.5] >>> l[0] ;; 也可以通过索引进行读取 ‘two‘ >>> l[1:3] ;; 通过分片来一次性拿好几本书 [1, 0.5] ;; 英语书架上现在有: >>> t = "one", 1, 2 >>> t[0] = "two" ;; Jake想要换掉第一本书,但报错了,元组的元素一旦确定,就不能改变 Traceback (most recent call last): File "<pyshell#29>", line 1, in <module> t[0] = "two" TypeError: ‘tuple‘ object does not support item assignment >>> t[0] ;; 可以通过索引来拿一本书来看 ‘one‘ >>> t[0:] ;; 通过分片来一次性拿很多书 (‘one‘, 1, 2) :: 不可变的元素,因为不能被修改,所以这可以避免因为其他原因而导致元组内的元素发生改变的情况 >>> t = "one", 1, 2 >>> k = list(t) ;; 利用list函数,可以将t中的元素变成一个列表,但t仍然是个元组 >>> t (‘one‘, 1, 2) >>> k ;; 只是利用t中的元素而已,并不会改变t [‘one‘, 1, 2] >>> t1 = tuple(k) ;; 同样,利用k中的元素,和tuple函数,也可以创建一个新的元组 >>> t1 (‘one‘, 1, 2)
3.tuple的函数
>>> t = (1, 3, 5, 2) ;; 创建一个新的元组 >>> t.index(1) ;; index可以通过元素名来返回该元素在元组中的位置 0 >>> t.index(5) 2 >>> t1 = (1, 2, 2, 3) >>> t1.index(2) ;; 若是元组中有多个相同元素, 则返回由左到右的第一个元素位置 1 >>> t = (1, 2, 2, 2, 3, 3) >>> t.count(2) ;; count用来返回所求元素在元组中的数量,元组中有3个元素名为2的元素 3 >>> t.count(3) ;; 两个元素3 2
4.特殊的tuple
>>> t = (1, 3, 4, [4, 5]) ;; 元组中可以有元素是一个列表 >>> t[3][0] ;; 这个的意思是:元组t中的第三个元素中的第0个元素 4 ;; 注意:计算机中是以0开始的,而不是以1开始 >>> t = (1, 3, 4, (4, 5, (12, 2, 4))) ;; 元组中可以存在元组 >>> t (1, 3, 4, (4, 5, (12, 2, 4))) >>> t = (1, 3, 4, [4, 5]) ;; 元组中存在一个列表 >>> t[3][0] = "one" ;; 因为指定的元素是一个列表的元素,所以可以更改,若是元组,则报错 >>> t (1, 3, 4, [‘one‘, 5])
小结:元组不可变的特性,就要求我们在元组创立之初,就要想好元组中要放哪些元素。同时,不可变也保证了数据的安全。
标签:dex 不可变 利用 code 修改 逗号 元素 不可 shel
原文地址:https://www.cnblogs.com/nianqiantuling/p/9131007.html