6. Python 元组,不可变的列表,滚雪球学 Python

梦想橡皮擦 等级 455 0 0

希望看到文章的 Python 学习爱好者可以坚持打卡,在评论区坚持跟橡皮擦卡学习的朋友,在 100 天之后,橡皮擦将送出神秘大奖

六、Python 元组,不可变的列表

今天新学习的概念叫做元组,其实学元组还是离不开列表,第一个知识点是元组的英文 tuple 要牢牢记住,第一个知识点是元组与列表的区别,列表的元素可以修改,元组的元素不可以修改,所以元素又可以称为不可变的列表,好了元组学习完毕了。

6.1 元组的定义

列表用中括号 [] 进行定义,元组用小括号 () 进行定义,元组的语法格式如下:

# my_tuple 是元组变量名,可以任意命名
my_tuple = (元素1,元素2,元素3...)

元组中的每一个数据也称为元素,元素也可以是数字、字符串或者列表等内容,输出使用 print 函数即可。

特别注意如果元组内的元素只有一个,需要在定义的时候在元素的右侧增加一个英文逗号 ,,例如:

# 只有一个元素
my_tuple = (元素1,)

下面就在 PyCharm 中进行一下实际的编码吧。

# 声明一个元组对象
my_tuple = (1, 2, 3)
print(my_tuple)
print(type(my_tuple))


# 声明一个元组对象
my_tuple1 = ("www", "aaa", "ggg")
print(my_tuple1)
print(type(my_tuple1))

# 声明只有一个元素的元组对象
my_tuple2 = ("www", )
print(my_tuple2)
print(type(my_tuple2))

6.2 读取元组中的元素

有列表在前,该部分学期起来就比较简单了,在元组中获取元素也是通过中括号 [] 加上索引的方式,与列表保持一致。

列表也可以通过循环去输出,可以自行通过 for 循环进行尝试。

列表中的元素可以通过索引去修改,但是元组不可以,以下代码会出现错误。

# 声明一个元组对象
my_tuple = ("www", "aaa", "ggg")
my_tuple[1] = "good"
print(my_tuple)

该错误提示如下:

TypeError: 'tuple' object does not support item assignment

原因为本篇博客开始提及的元组不允许修改元素,上述错误翻译之后表示 tuple 对象不支持赋值。

6.3 元组的其他知识补充

由于元组与列表太相似了,接下来的一些知识点只做简单罗列。

  • 切片适用于元组
  • 列表方法中不涉及修改列表元素的方法都可用于元组,例如 lencount ...,如果列表方法会对元素进行修改,那不可用于元组,例如 appendinsert... 如果想详细查阅,回忆 dir 方法。
  • 部分列表可用的内置函数同样适用于元组,例如 maxmin...

6.4 元组与列表转换

在开发代码的过程中,有时需要对列表与元组进行相互转换,该转换类似之前学习过的强制转换的过程,核心的内置函数为 listtuple

将元组修改为列表。

my_tuple = ("www", "aaa", "ggg")
my_list = list(my_tuple)
print(my_list)

将列表修改为元组。

my_list = ["www", "aaa", "ggg"]
my_tuple = tuple(my_list)
print(my_tuple)

6.5 内置函数 zip

函数 zip 可以将一个可迭代对象,如列表打包成元组,打包之后返回的是一个 zip 对象,说起来有点绕,而且应用的场景不是很明确,可以先看代码学习一下。

en_names = ["apple", "orange", "pear"]
cn_names = ["苹果", "橘子", "梨"]

zipData = zip(en_names, cn_names)

print(zipData)  # 打印 zipData
print(type(zipData))  # 打印 zipData 数据类型
print(list(zipData))  # 输出 zipData 中的数据内容

输出结果:

<zip object at 0x0000024C1E4FF648>
<class 'zip'>
[('apple', '苹果'), ('orange', '橘子'), ('pear', '梨')]

通过代码你可以看到,zip 把两个列表的数据合并了,每个列表中对应索引位置的元素合并在了一个元组里面。上述代码中就出现了 apple苹果 对应,orange橘子 对应,pear 对应。

如果放在 zip 函数的列表参数长度不相同,那 zip 会选择元素最少的那个列表作为依据,形成对应关系。

en_names = ["apple", "orange"]
cn_names = ["苹果", "橘子", "梨"]

zipData = zip(en_names, cn_names)

print(zipData)  # 打印 zipData
print(type(zipData))  # 打印 zipData 数据类型
print(list(zipData))  # 输出 zipData 中的数据内容

该代码第一个列表有 2 个元素,第二个列表有 3 个元素,最终输出的结果为:

<zip object at 0x0000026DE2F7F608>
<class 'zip'>
[('apple', '苹果'), ('orange', '橘子')]

如果在 zip 中的参数前面增加 * 符号,相当于解压,返回二维矩阵式。

代码如下:

en_names = ["apple", "orange"]
cn_names = ["苹果", "橘子", "梨"]

zipData = zip(en_names, cn_names)

print(zipData)  # 打印 zipData

unzipData = zip(*zipData)
print(unzipData)  # 打印 unzipData

print(list(unzipData))  # 打印 unzipData 内容

6.6 元组的功能与应用场景

元组既然与列表这么相似,那为何 Python 还要专门设计一个元组数据类型来呢?

相比于列表,元组有如下优点。

  1. 因为其不可修改,可以保护数据;
  2. 元组在底层数据结构上比列表简单,占用的资源少,程序执行速度快;(说了也不用记住的知识)
  3. 元组很多时候回用作函数的返回值。(后续知识)

6.7 这篇博客的总结

元组与列表就像是两个相似的亲兄弟,只在外观上有一点点区别,核心的区别是一个可以被修改(列表),一个不可以被修改(元组),其它的差异都是基于此衍生出来的,所以掌握这个内容之后,你能对比着学会这两个知识点。

最后一碗毒鸡汤

只要坚持下去,总会有失败的一天。 O(∩_∩)O 哈哈~

🌹🌹🌹🌹🌹🌹🌹🌹


收藏
评论区

相关推荐

原来Python绘图也可以这么漂亮,这次真的是学习到了!
(https://imghelloworld.osscnbeijing.aliyuncs.com/8830803f033eeed85783e9058cf08968.png) 作者:朱小五 来源:快学Python 👆人生苦短,快学Python! 最近看了一篇文章《一个牛逼的Python 可视化库:PyG2Plot》,可惜只是简单介
为啥要学Python?
为啥要学Python?如果我跟你说你现在用一天拉出来的财务统计表,学了Python之后能用1个小时就搞定,你学不学?如果你花了8个小时扒的竞品投放数据,学了Python之后能用30min搞定,你学不学?你总羡慕你的同事能6点下班,陪女朋友蹦迪夜生活丰富,你却在满脸油头的爆肝加班,学了Python之后,你也能这样,你学不学?如果我跟你说,学会了Python能增
Python初学者必备书籍《Python入门经典》高清PDF版|百度网盘免费下载|Python初学者,自学Python必读
提取码:1028以及前文提到的学习路线图内容简介Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python可以用于很多的领域,从科学计算到游戏开发。《Python入门经典》是面向Python初学者的学习指南,详细介绍了Python编程基础,以及一些高级概念,如面向对象编程。全书分为24章。第1章介绍了Python的背景和安装方法。第2章
最好用的Python学习教程第一篇章
学习不打烊,充电加油只为遇到更好的自己。希望大家如果觉得好的话可以点赞,评论鼓励一下。 一、从这里学起?学Python你应该知道这些内容。 1.1 导语如何快速学会Python?这篇博客会告诉你如何从无到有,构建自己的知识框架,博客主励志打造最好用的Python基础教程。 1.2 为什么要学习Python 简单易学Python是一种代表简单主义思想的语言,
python的学习难?你的方法不对罢了,看看我的。
1、选择Python版本对于使用python的人来说,python的版本就是我们的工作环境,因此,在学习之前需要考虑好学习哪个版本,python2和python3的版本不同,会存在一些差异,虽说不大,但直接学习python3 的话相对来说会好一点,而且跑一趟还能3相对来说对零基础的小白来说更加的友好,容易上手。2、学习Python基础知识Python 是一个
全网最全python学习路线图,让学习不迷路
学习Python有一段时间了,最近也是在不断的整理Python相关的基础知识和学习一些新的知识,想来分享给大家。我刚开始接触Python时,和大多数初学者一样不知道从那里开始学习python,我也在网上找了许多python相关的资料来学习,但是资料多也不见得就好,因为不知道从哪里开始下手,走了许多弯路。后面我就整理了一套对初学者来说学习python能很快上手
盘点一款Python二级考试模拟软件,带你轻松过关二级Python考试
大家好,我是Python进阶者。今天给大家讲的这个软件,主要是想让大家通过这个软件能将自己的Python基础进一步提高。一、前言相信有些小伙伴学习Python有一段时日,但是又不知道自己的Python基础学的如何,这个时候就需要一款神器来检测一下自己的Python基础了。要想检测自己的Python功力最直观的方法当然是做题了,至于做什么题了我们就不得而知了,
PEP 333
> > 翻译自 Python Web Server Gateway Interface v1.0 [PEP 333 - Python Web Server Gateway Interface v1.0](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fwww.python.org%2F
CentOS升级Python到2.7版本
查看python的版本 python -V Python 2.4.3 1.先安装GCC yum -y install gcc 2.下载Python-2.7.2 wget http://python.org/ftp/python/2.7.2/Python-2.7.2.tar.bz2 3.解压Python-2.7.2
FreeBSD python安装MySQL
fetch https://pypi.python.org/packages/source/M/MySQL-python/MySQL-python-1.2.4.zip unzip MySQL-python-1.2.4.zip cd MySQL-python-1.2.4 python setup.py install ln -s /usr/loca
Python 3 教程
Python 3 教程 =========== ![python3](https://www.runoob.com/wp-content/uploads/2014/05/python3.png) Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,
Python 修改pip源
接触python多半年光景了,多数时间都是在公司看看书,最近终于有空在家学学python,写点代码。 可是涉及到python,就要说到python的模块了,python不管从代码风格还是涉及面上,都辣么辣么的惊艳。 好吧,谈及下载python第三方模块,势必谈及pip,默认的pip源下载速度实在是不给力啊不给力。所以修改pip源吧。 特别注意了
Python基础:四、python的优缺点
python是一门动态解释性的强类型语言 -------------------- ### python的优点: **1\. python的定位是"优雅"、"明确"、"简单"**         python程序看上去总是简单易懂,初学者学python,不但入门容易,二缺将来深入下去,可以边啊些那些非常复杂的程序。 **2\. 开发效率高**  
Python环境搭建—安利Python小白的Python和Pycharm安装详细教程
人生苦短,我用Python。众所周知,Python目前越来越火,学习Python的小伙伴也越来越多。最近看到群里的小伙伴经常碰到不会安装Python或者不知道去哪下载Python安装包等系列问题,为了方便大家学习Python,小编整理了一套Python和Pycharm安装详细教程,只要大家按照这个步骤来,就可以轻松的搞定Python和Pycharm的安装了。
Python进阶丨如何创建你的第一个Python元类?
> **摘要:**通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类。 Python元类设置类的行为和规则。元类有助于修改类的实例,并且相当复杂,是Python编程的高级功能之一。通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类。本文介绍以下概念: * * 什么是Python元类?