零基础学习 Python 之元组

元组的定义

元组和咱们以前讲过的数字,字符串和列表同样,也是 Python 中的一种对象类型,它和列表比较想象,因此通常会被忽略掉,可是因为其特殊性,在实际应用的时候又很容易犯错。python

首先咱们来看一个例子:c++

>>> a = 'abc'
>>> a
'abc'
>>> b = 'def',123,[1,2,3]
>>> b
('def', 123, [1, 2, 3])
>>> type(a)
<class 'str'>
>>> type(b) #type是查看对象类型的函数
<class 'tuple'>
复制代码

从上面的例子中很容易看出 a 是字符串,可是看 b ,这样输入居然没有报错,并且把结果放到了一个圆括号里,这就是 Python 的不同凡响之处,这个带括号的对象,就是咱们今天要讲的新的对象类型:元组 ( tuple ) 。bash

元组是用圆括号括起来的,元素与元素之间用英文的逗号隔开,从上面的例子中咱们也能够看出,元组也是序列,这个跟字符串和列表相似。可是元组中的元素不能更改,和字符串相似;可是元组里的元素又能够是任意的对象类型,这个跟列表类似,因此咱们姑且能够认为元组是部分字符串属性和部分列表属性的并集。ssh

索引 & 切片

既然元组也是列表,那么它跟字符串和列表的基本操做相仿,每一个元素理应有本身对应的索引,而且可切片。函数

>>> str = (1,2,'234',(1,2),['c','c++','python'])
>>> str[2]
'234'
>>> str[4]
['c', 'c++', 'python']
>>> str[4][2]
'python'
复制代码

关于序列的操做在元组上的操做在这里就不一一展现了,以前的文章写过,有兴趣的能够本身尝试一下,忘记的能够点下面的文章。学习

零基础学习 Python 之字符串 零基础学习 Python 之列表ui

固然了,由于元组是不可修改的,因此在列表里面因此关于能够修改列表的方法在这里都是无效的。那么元组这类类型的对象有哪些方法呢?还记得以前咱们说过的 dir() 吗?dir(tuple) 就能够知道了(下面代码能够右拉)。spa

>>> 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']
复制代码

虽然元组不可修改,可是元组和列表是能够互相转化的,能够用 list() 和 tuple() 实现。code

>>> a = ('a','123',[1,2,3])
>>> type(a)
<class 'tuple'>
>>> a = list(a)
>>> type(a)
<class 'list'>
>>> a = tuple(a)
>>> type(a)
<class 'tuple'>
复制代码

还有一点须要提醒的是,当元组中只有一个元素的时候,要在元素的后面跟上英文的逗号,要否则 Python 会误会你想表达的意思,请看下面的例子。orm

>>> str1 = ('rocky',)
>>> type(str1)
<class 'tuple'>
>>> str2 = ('rocky')
>>> type(str2)
<class 'str'>
复制代码

写在最后

由于元组比较简单,因此到这里基本上就结束了。其实看完元组之后,不少人会有一个疑惑,那就是元组有什么用呢?既然只是字符串和元组部分功能的并集,那么咱们只用列表和字符串就行了呀,还学什么元组?在不少时候确实只须要字符串和列表就能够解决不少问题,可是不要忘了咱们的计算机是用来处理复杂问题的,就好比咱们说的话同样,有些词不经常使用可是它就是不可替代的,咱们照样要在某些特定的场景下使用它。

就拿元组的其中一个好的地方来讲,在字典中,元组能够做为字典的 key ,可是列表就不能够,由于字典的 key 是不可变的。至于什么是字典,也是一种对象,我在以后会讲到。

更多内容,欢迎关注公众号「Python空间」,期待和你的交流。

在这里插入图片描述
相关文章
相关标签/搜索