零基础入门学习Python(13)--元组:戴上了枷锁的列表
2018-03-07 15:34
836 查看
前言
这节课我们讨论主题是元祖:我们有个小标题戴上了枷锁的列表
我们都知道早在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)--元组:戴上了枷锁的列表
- 【零基础入门学习Python笔记013】元祖:戴上了枷锁的列表
- 元组:戴上了枷锁的列表 - 零基础入门学习Python013
- 【零基础入门学习Python笔记013】元祖:戴上了枷锁的列表
- 学习笔记-小甲鱼Python3学习第十三讲:元组:戴上了枷锁的列表
- Python 入门学习 -----变量及基础类型(元组,列表,字典,集合)
- 零基础学习python_列表和元组(10-13课)
- Python 入门学习 -----变量及基础类型(元组,列表,字典,集合)
- .Net程序员之Python基础教程学习----列表和元组 [First Day]
- Python基础教程 第2章: 列表和元组 学习笔记
- Day2 Python基础学习——字符串、列表、元组、字典、集合
- python基础知识学习:列表和元组
- 零基础入门学习Python学习笔记第五讲【列表】
- python学习(基础补充)--字符串、列表、元组
- Python基础学习:列表和元组
- Python入门基础语法之字符串、列表、元组
- Python基础教程学习比较----第二章 列表和元组
- Python3.5入门学习记录-列表、元组、字典
- python基础学习二 list和tuple(列表和元组)
- 列表:一个打了激素的数组3 - 零基础入门学习Python012