python编程入门之五:元组
我们在上一章已经学习使用了列表,大家可能感觉列表真是一个神奇的东西,可以帮助我们完成很多的工作,列表的方法也是多得多,以为学好了列表,就学好了python,虽然列表很重要,但它也仅仅是python的冰山一角。所以这一章我们来学习元组,一个被戴上了枷锁的列表----元组。
5.1 元组的创建和访问
首先先让大家知道为什么元组被称为被戴上枷锁的列表,因为元组的性质和用法和列表差不多,唯一的两个不同就是1,元组不可以增删改;2,创建元组要用小括号()。元组的英文名为tuple,先看一下是如何进行创建和访问的吧,注意她和列表的区别。
tuple1 = (1, 2, 3, "Hopes", "Alex") print(tuple1) print(tuple1[3]) #这里要注意,尽管元组的创建使用的小括号,但访问某个元素还是要用中括号 print(tuple[2:]) # 同样可以用切片
结果:
(1, 2, 3, ‘Hopes‘, ‘Alex‘) Hopes (3, ‘Hopes‘, ‘Alex‘)
结果很明显,元组的创建和访问元素和列表是几乎一样的,那如果我们要尝试一下增删改呢?
我们先用dir方法将元组的内置方法打印一下看看。
print(dir(tuple))
结果:
[‘__add__‘, ‘__class__‘, ‘__contains__‘, ‘__delattr__‘, ‘__dir__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘, ‘__ge__‘, ‘__getattribute__‘, ‘__getitem__‘, ‘__getnewargs__‘, ‘__gt__‘, ‘__hash__‘, ‘__init__‘, ‘__init_subclass__‘, ‘__iter__‘, ‘__le__‘, ‘__len__‘, ‘__lt__‘, ‘__mul__‘, ‘__ne__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__rmul__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘count‘, ‘index‘]
我们看一下tuple的内置方法,是不是根本就没有增删改的方法,涉及到像那种两组下划线形式的“魔法方法”我们以后会讲到,毕竟不是太容易。但我们还是看到了tuple仅有的两种常规方法--count和index,当然,我们在讲列表的时候已经接触过这两种方法了,让我们打印出来再回忆一下。
tuple1 = (1, 3, 1, 5, "Hopes", "Alex") print(tuple1.index(‘Hopes‘)) print(tuple1.count(1))
结果:
4 2
是不是已经回忆起来了,count是用来统计某个元素出现的次数,index是查询某个元素的索引值。元组的常规方法就这么多,它显然要比列表要简单许多,而且它是不可以更改元素的,所以在某些方面是比较安全的。
那如果我们遇到了特殊情况,确实要修改元素怎么办呢?
5.2 元组的修改和删除
如果有人较真问起来,不是说好了元组不能修改的吗?你在这里又给我讲修改,你TM是在逗我?嗯~怎么说呢,其实这个“修改”并不是真正意义上的修改,而应该是通过拼接的方式来重新构建一个新元组,是怎么做的呢?看下面的代码。
tupleOld = (1, 2, 3, 5, 6) tupleNew = tupleOld[:2] + (4,) + tupleOld[2:] print(tupleNew) print(tupleOld)
结果:
(1, 2, 4, 3, 5, 6) (1, 2, 3, 5, 6)
所以这里说的修改其实就是用之前的列表来重新拼接一个新元组,而且还要注意这里我们拼接的时候(4,),这个单独元素后面是需要加一个逗号的,这样才能表明这是一个元组,不然会报错。
那元组的删除是怎么回事呢,这个删除其实并不能删除元组里的特定元素,因为元组的方法本来就没有删除这个BIF,所以我们这里说的删除是删除整个元组,对,你没听错,就是全部删掉,同样很简单,利用我们的del方法。
tuple1 = (1, 3, 1, 5, "Hopes", "Alex") del(tuple1) print(tuple1)
结果:
NameError: name ‘tuple1‘ is not defined
报错说我们并没有定义这个“tuple1”,所以我们删除成功了。
5.3 元组和列表的补充用法
我们已经学习了列表和元组的基本用法,但这些还仅仅不够,下面我们再来介绍一些有趣的用法。
(1)多重列表和多重元组
多重的意思也就是,列表里面还包含列表,元组里面还包含元组,或者列表里面包含元组,元组里面包含列表,这些用法都是可行的,而且可以多重包含,下面我们来看一下多重列表和多重元组是怎么创建和调用的。
list1 = [1, 2, 3, [4, 5], 6, 7] print(list1[3][1]) tuple1 = (1, 3, 5, (7, 9)) print(tuple1[3][0])
结果:
5 7
所以可以看得出,如果要访问列表里的列表或者元组里的元组,只需要用多个中括号来定位就可以了,其实也并没有那么麻烦。
(2)判断元素是否在列表或元组内
如果要判断某个元素是否存在于列表元组内,python提供了一个非常人性化的方式:in /not in 方式
list1 = [1, 2, 3, [4, 5], 6, 7] tuple1 = (1, 3, 5, (7, 9)) print(3 in list1) # 判断3是否在list内 print(4 in list1[3]) # 注意如果要判断内层的元素,就必须将列表定义到内层 print(4 in list1) # 没有具体到内层 print(5 in tuple1) print(9 in tuple1[3])
结果:
True True False True True
关于列表和元组就先说这些,以后的学习中会大量的用到这两个类型,所以一定要多多积累,多多复习。