零基础学习 Python 之元组

写在之前

大家好,这里是零基础学习 Python 系列,在这里我将从最基本的 Python 写起,然后再慢慢涉及到高阶以及具体应用方面。我是完全自学的 Python,所以很是明白自学对于一个人的考验,所以在这里我会尽我最大的努力,把 Python 尽可能简单的表述清楚,让更多想要学习 Python 的朋友能够入门。同时写这个教程也算是对自己之前所学知识的一个巩固和提高,喜欢的朋友们可以点个关注,有问题欢迎随时和我交流。本文所有的代码编写均是Python3 版本。

元组的定义

元组和我们之前讲过的数字,字符串和列表一样,也是 Python 中的一种对象类型,它和列表比较想象,所以一般会被忽略掉,但是由于其特殊性,在实际应用的时候又很容易犯错。

首先我们来看一个例子:

>>> 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 ) 。

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

索引 & 切片

既然元组也是列表,那么它跟字符串和列表的基本操作相仿,每个元素理应有自己对应的索引,并且可切片。

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

关于序列的操作在元组上的操作在这里就不一一展示了,之前的文章写过,有兴趣的可以自己尝试一下,忘记的可以点下面的文章。

零基础学习 Python 之字符串

零基础学习 Python 之列表 ( 一 )

零基础学习 Python 之列表 ( 二 )

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

>>> 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() 实现。

>>> 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 会误会你想表达的意思,请看下面的例子。

>>> str1 = ('rocky',)
>>> type(str1)
<class 'tuple'>
>>> str2 = ('rocky')
>>> type(str2)
<class 'str'>

写在最后

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

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

感谢你能看到这里,希望我写的东西能够让你有到收获,但是我还是希望我在文章里插入的代码,你们能自己动手试一下,都很简单。原创不易,每一个字,每一个标点都是自己手敲的,所以希望大家能多给点支持,该关注关注,该点赞点赞,该转发转发,有什么问题欢迎在后台联系我,也可以在公众号找到我的微信加我。

本文分享自微信公众号 - Python空间(Devtogether)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-07-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏浊酒清味

Python进阶之Matplotlib入门(二)

Matplotlib是Python的画图领域使用最广泛的绘图库,它能让使用者很轻松地将数据图形化以及利用它可以画出许多高质量的图像,是用Python画图的必备技...

9230
来自专栏菲宇

Python Django使用HttpResponse返回图片并显示

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

14740
来自专栏浊酒清味

Python进阶之Matplotlib入门(三)

Matplotlib是Python的画图领域使用最广泛的绘图库,它能让使用者很轻松地将数据图形化以及利用它可以画出许多高质量的图像,是用Python画图的必备技...

8920
来自专栏机器学习与python集中营

奔走相告,Python 3.8.0 正式发布!

那么,这次新发布的 Python 3.8.0 有哪些重要的改进呢?以下是是 Python 3.8 相比 3.7 的新增特性。

5330
来自专栏菲宇

Python操作MongoDB

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

6530
来自专栏菲宇

jieba分词器详解及python实战

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

13420
来自专栏测试技术圈

Jenkins+Ansible+GitLab持续交付平台搭建-第3篇

遇到错误:configure: error: no acceptable C compiler found in $PATH

12030
来自专栏数据派THU

史上最全 | 数据分析技能详细拆解,一张图覆盖全流程知识细节和资源推荐(附下载)

而基于这些数据的分析,可以挖掘到非常多有价值的信息,这些信息正在成为大多数企业业务增长、迭代更新的关键。

13230
来自专栏菲宇

python的super()的作用和原理

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

7220
来自专栏Small Code

BERT 是如何分词的

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

24430

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励