零基础入门学习Python(13)--元组:戴上了枷锁的列表
前言
这节课我们讨论主题是元祖:我们有个小标题戴上了枷锁的列表
我们都知道早在300多年前,孟德斯鸠在变法的时候说过,一切拥有权力的人都容易被滥用权力,这是万古不变的一条经验。但是呢,凡是拥有大权利的人,都想用自身的实践来证明,孟德斯鸠只是一个会说屁话的家伙。但是呢,他们后来好像都失败了哈。
这不,我们的列表同志,自从打了激素后,一路过关斩将,出任ceo,迎娶白富美,可谓顺风顺水,职场情场双丰收啊。可是呢,这天它又打起了我们美丽又可爱的苍井空老师的主意,居然想把列表里的人妻,替换成苍井空,这可会闹出大问题了。
对不对,活生生的把我们的苍老师给抢走,金屋藏娇啊,那我们这种屌丝可不同意了,有的说苍井空是大家的,绝不能让你霸占了。
有的甚至气急败坏的说,苍老师还是处女呢,怎么能纳入人妻的范畴,可恶!
于是呢,轰轰烈烈的抗议就此拉起,可谓得屌丝者得天下,逆屌丝者必遭殃。
列表同志真是千古功名一聚尘呐。自从列表同志被抓了后,Python的作者感觉有点大事不妙了。可能列表给的权利太大了。
我们应该做一些限制,所以呢,Python的作者就Python社区的小伙伴们,推出了我们今天的主题:元组(tuple)
如果你定义了一个元组,那么里面的任何一个元素无法改变了。所以你尝试把元组里的人妻偷偷换成苍井空,sorry,no way!
好吧,我们认真讲课了,先忘掉人妻和苍井空吧。
知识点
由于和列表是近亲关系,所以元组和列表在实际使用上是非常相似的。
我们这节课主要通过讨论元组合列表到底有什么不同来学习元组,酱紫大家就不会觉得老是重复一样的内容。
我们主要从以下几个点来讨论学习:
首先我们强调一下,元组和列表最大的区别就是列表可以随意修改里面的元素,而元组就不能。
创建和访问一个元祖
创建列表时,是用的中括号[],而创建元组时,大部分用的是小括号()
>>> tuple1 = (1,2,3,4,5,6,7,8)
>>> tuple1
(1, 2, 3, 4, 5, 6, 7, 8)
>>> tuple1[1]
2
>>> tuple1[5:]
(6, 7, 8)
>>> tupe1[:5]
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
tupe1[:5]
NameError: name 'tupe1' is not defined
>>> tuple1[:5]
(1, 2, 3, 4, 5)
>>> tuple2 = tuple1[:]
>>> tuple2
(1, 2, 3, 4, 5, 6, 7, 8)
>>> tuple1[1] = 3
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
tuple1[1] = 3
TypeError: 'tuple' object does not support item assignment
>>>
>>> temp = (1)
>>> temp
1
>>> type(temp)
<class 'int'>
>>>
>>> temp2 = 2,3,4
>>> type(temp2)
<class 'tuple'>
>>>
>>>
>>>
>>> temp = []
>>> type(temp)
<class 'list'>
>>>
>>>
>>>
>>> temp = ()
>>> type(temp)
<class 'tuple'>
>>>
>>>
>>>
>>>
>>> temp = (1,)
>>> temp
(1,)
>>> type(temp)
<class 'tuple'>
>>>
>>>
>>> temp = 1,
>>> type(temp)
<class 'tuple'>
>>> temp
(1,)
>>>
>>>
>>> 8 * (8)
64
>>> 8 * (8,)
(8, 8, 8, 8, 8, 8, 8, 8)
更新和删除一个元组
>>> temp = ('小甲鱼','黑夜','迷途','小布丁')
>>>
>>> temp = temp[:2] + ('怡静',) + temp[2:]
>>> temp
('小甲鱼', '黑夜', '怡静', '迷途', '小布丁')
>>> temp = temp[:2] + temp[3:]
>>> temp
('小甲鱼', '黑夜', '迷途', '小布丁')
>>> del temp
>>> temp
Traceback (most recent call last):
File "<pyshell#54>", line 1, in <module>
temp
NameError: name 'temp' is not defined
元组相关的一些操作符
- 拼接操作符
+ - 重复操作符
* - 关系操作符
>,<,== - 成员操作符
in,not in - 逻辑操作符
and,or
课后习题
- 请用一句话描述什么是列表?再用一句话描述什么是元组?
列表:一个大仓库,你可以随时往里边添加或删除任何东西。
元组:封闭的列表,一旦定义,就不可改变(不能添加,删除或修改) - 什么情况下你需要使用元组而不是列表?
当我们希望内容不被轻易改写时候,使用元组。
需要频繁修改数据,使用列表 请将下图左边列表的内置方法与右边的注释连线,并圈出元组可以使用的方法
创建一个元组,什么情况下逗号与小括号必须同时存在,缺一不可?
在拼接只有一个元素的元组时候
>>> temp = (‘小甲鱼’, ‘黑夜’, ‘迷途’, ‘小布丁’)
# 如果我想在“黑夜”和“迷途”之间插入“怡静”,我们应该:
>>> temp = temp[:2] + (‘怡静’,) + temp[2:]
- x,y.z = 1,2,3 请问x,y,z是元组吗?
所有的多对象,逗号分隔,没有明确用符号定义的这些集合默认类型都是元组
>>> x,y,z = 1,2,3
>>> type(x)
<class 'int'>
>>> type(x,y,z)
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
type(x,y,z)
TypeError: type.__new__() argument 1 must be str, not int
>>> h = x,y,z
>>> type(h)
<class 'tuple'>
>>> h
(1, 2, 3)
请写出以下情景中应该使用列表还是元组来保存数据:
1)游戏中角色的属性: 列表
2)你的身份证信息: 元组
3)论坛的会员: 列表
4)团队合作开发程序,传递给一个你并不了解具体实现的函数的参数: 元组
5)航天火箭各个组件的具体配置参数: 元组
6)NASA系统中记录已经发现的行星数据:列表上节课我们通过课后作业的形式学习到了“列表推导式”,那请问如果把中括号改为小括号,会不会得到“元组推导式”呢?
>>> typle1 = (x**2 for x in range(10))
>>> typle1
<generator object <genexpr> at 0x00000065900D1200>
>>> type(typle1)
<class 'generator'>
Python3 没有“元组推导式”,那为什么没有报错?因为你误打误撞得到了一个生成器:
尝试访问生成器:
注意:Python3开始next()方法改成位__next__()哦~
>>> typle1.__next__()
0
>>> typle1.__next__()
1
>>> typle1.__next__()
4
>>> typle1.__next__()
9
>>> typle1.__next__()
16
>>> typle1.__next__()
25
>>> typle1.__next__()
36
>>> typle1.__next__()
49
>>> typle1.__next__()
64
>>> typle1.__next__()
81
>>> typle1.__next__()
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
typle1.__next__()
StopIteration
零基础入门学习Python(13)--元组:戴上了枷锁的列表的更多相关文章
- 元组:戴上了枷锁的列表 - 零基础入门学习Python013
元组:戴上了枷锁的列表 让编程改变世界 Change the world by program 元组:戴上了枷锁的列表 由于和列表是近亲关系,所以元组和列表在实际使用上是非常相似的. 我们这节课主要通 ...
- 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案
国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...
- 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案
初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...
- 【Python教程】《零基础入门学习Python》(小甲鱼)
[Python教程]<零基础入门学习Python>(小甲鱼) 讲解通俗易懂,诙谐. 哈哈哈. https://www.bilibili.com/video/av27789609
- 《零基础入门学习Python》【第一版】视频课后答案第001讲
测试题答案: 0. Python 是什么类型的语言? Python是脚本语言 脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序.以简单的方 ...
- 零基础入门学习Python(1)--我和Python的第一次亲密接触
前言 最近在学习Python编程语言,于是乎就在网上找资源.其中小甲鱼<零基础入门学习Python>试听了几节课,感觉还挺不错,里面的视频都是免费下载,小甲鱼讲话也挺幽默风趣的,所以呢,就 ...
- 【零基础入门学习Python笔记013】元祖:戴上了枷锁的列表
元组:戴上了枷锁的列表 因为和列表是近亲关系.所以元祖和列表在实际使用上是很相似的. 本节主要通过讨论元素和列表究竟有什么不同学习元祖. 元组是不可改变元素的.插入.删除或者排序都不能够.列表能够随意 ...
- 零基础入门学习Python(17)--函数:Python的乐高积木
前言 相信大家小时候都玩过神奇的乐高积木, 只要通过想象力和创造力我们可以拼凑很多神奇的东西,那么随着我们学习的深入,我们编写的Python代码也将日益增加,并且也越来越复杂, 所以呢,我们需要找寻一 ...
- 零基础入门学习Python(10)--列表:一个打了激素的数组
前言 有时候我们需要把一些东西暂时保存起来,因为他们有着一些直接或间接的联系,我们需要把它们放在某个组或者集合中,未来可能用得上. 很多接触过编程的朋友都知道,都接触过数组这个概念,那么数组这个概念事 ...
随机推荐
- Ubuntu 12.04 设置终端字体为文泉驿(转载)
转自:http://my.oschina.net/uniquejava/blog/98480 0.说明 在gnome-terminal终端中看习惯了文泉驿微米黑字体,没想到从11.10升级到 ...
- 洛谷P3287 [SCOI2014]方伯伯的玉米田(树状数组)
传送门 首先要发现,每一次选择拔高的区间都必须包含最右边的端点 为什么呢?因为如果拔高了一段区间,那么这段区间对于它的左边是更优的,对它的右边会更劣,所以我们每一次选的区间都得包含最右边的端点 我们枚 ...
- 矩阵快速幂/矩阵加速线性数列 By cellur925
讲快速幂的时候就提到矩阵快速幂了啊,知道是个好东西,但是因为当时太蒟(现在依然)没听懂.现在把它补上. 一.矩阵快速幂 首先我们来说说矩阵.在计算机中,矩阵通常都是用二维数组来存的.矩阵加减法比较简单 ...
- 在Linux下使用linuxdeployqt发布Qt程序
一.简介 linuxdeployqt 是Linux下的qt打包工具,可以将应用程序使用的资源(如库,图形和插件)复制到二进制运行文件所在的文件夹中. 二.安装linuxdeployqt 去github ...
- [POI2007]对称轴osi
Description FGD小朋友--一个闻名遐迩的年轻数学家--有一个小MM,yours.FGD小朋友非常喜欢他的MM,所以他很乐意帮助他的MM做数学作业.但是,就像所有科学的容器一样,FGD的大 ...
- HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2 历史演变和设计思路(详)*
HTTP 协议是互联网的基础协议,也是网页开发的必备知识,最新版本 HTTP/2 更是让它成为技术热点. 本文介绍 HTTP 协议的历史演变和设计思路. 一.HTTP/0.9 HTTP 是基于 TCP ...
- ios 创建和绘画pdf文件 -转
转自:http://blog.csdn.net/ant1239/article/details/7761676 本方法为项目中画pdf的一个方法,画pdf,一共分为几步,1,获取地址,有两种获取地址方 ...
- windwsform登录页面
简单登录设计: 读取用户名密码 数据库表 实体类 数据访问类: 隐藏登录页面: 回车快捷键: 传值到main窗口:
- 教你如何在实战项目中使用WCF
我们都知道调用WCF直接在Service References中引用可以远程调用的WCF Url就行了. 但是我们想过没,在Development环境中可以这样做,但是QA.UAT.Productio ...
- ScrollView属性
1.文本内容过长,一个屏幕显示不下,这时候就把显示文本的 TextView包裹在ScrollView里面,可以做到滚动下滑查看的功能 2.隐藏滚动条 标签属性设置android:scrollbars= ...