学习完列表之后,接着喝大家说说坚持原则的元组,元组和列表很像,但一个没有原则,说变就变,一个是坚持原则,必须按照他的原则来,有点像恋爱中和结婚后的小姐姐哦 :)
1. 元组的定义
元组也是一种sequence特性的类型, 它和列表非常相似,除了一点: 元组的内容是不能改变的。Python代码中,我们可以这样定义一个空的元组,赋值给一个变量
nameList = ()
圆括号用来表示一个元组。
如果定义元组的时候,里面就存放了一些数据对象,只需要填写到括号里面就可以了。每个对象之间用逗号隔开。比如
a = (1, 2, 3.14, 'hello')
这个元组里面就包含了多种类型的对象: 整数、小数 、 字符串。元组里面的每个对象,就称之为元组的一个元素。甚至还可以包含另一个列表或者元组作为元素,如下
a = (1, 2, 3.14, 'hello', [7,8,9] )
最后一个元素 就是 另外的一个列表对象 [7,8,9],如果元组中只有一个元素,必须要在后面加上逗号,像这样
a = (1, )
否则 这样写的话
a = (1)
a就是 数字1 了, 而不是包含 数字1 的元组。定义元组还可以去掉圆括号,像这样
a = 1, 2, 3.14, 'hello'
但是这样定义的时候,如果元组中只有一个元素,必须要在后面加上逗号,像这样
a = 1,
2. 元组的sequence操作
刚才说了,元组也是有sequnce特性的。当然也支持sequence操作。就是支持用元素索引的方式取出里面的元素; 也支持用切片操作 截取一部分内容作子列表。
元组的 索引和切片操作和 列表、字符串是 类似的。
比如
a = (1, 2, 3.14, 'hello', [7,8,9])
a[0] # 就是 1
a[1] # 就是 2
a[4] # 就是 [7,8,9]
a[-1] # 也是 [7,8,9]
a[-4] # 也是 2
a[-1][0] # a[-1] 是[7,8,9], a[-1][0] 就是 [7,8,9] 里面的第一个元素,就是 7
元组的切片也后字符串类似,想象用刀去切取其中的一部分,该在哪里下刀,就使用哪里的索引:
a = (1, 2, 3.14, 'hello', [7,8,9])
a[0:3] # 结果是 (1, 2, 3.14)
a[:3] # 结果也是 (1, 2, 3.14)
a[3:5] # 结果是 ('hello', [7,8,9])
a[3:] # 结果也是 ('hello', [7,8,9])
a[-1][:2] # 结果是 [7,8] 为什么? 自己想一想
3. 元组内容不可变
和列表不同,元组对象的内容是不可以变化的,比如
a = (1, 2, 3.14, 'hello', [7,8,9])
a[0] = '你好'
执行上面的代码,解释器会报如下错误
Traceback (most recent call last): File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
意思是说元组的内容是不可以改变的。
但是元组中的列表的内容却是可以改变的,比如
a = (1, 2, 3.14, 'hello', [7,8,9])
a[-1][0] = '你好'
print(a)
结果 a的值就变成了
(1, 2, 3.14, 'hello', ['你好', 8, 9])
4. 总结
经过上面的介绍,list是不是像恋爱中的小姐姐呢,有什么事,高兴就行,元组呢?是不是像已经拿拿红本本的小姐姐,有规定的,你得按照我们结婚前的约定来办,工资全上交,私房钱看心情,小姐姐说了算,你可不能擅自做主的哟!但是小姐姐心情好,就可以改变一下,给你涨点!!!: )
更多内容,请移步到白月黑羽Python教程!
1. 元组的定义
元组也是一种sequence特性的类型, 它和列表非常相似,除了一点: 元组的内容是不能改变的。Python代码中,我们可以这样定义一个空的元组,赋值给一个变量
nameList = ()
圆括号用来表示一个元组。
如果定义元组的时候,里面就存放了一些数据对象,只需要填写到括号里面就可以了。每个对象之间用逗号隔开。比如
a = (1, 2, 3.14, 'hello')
这个元组里面就包含了多种类型的对象: 整数、小数 、 字符串。元组里面的每个对象,就称之为元组的一个元素。甚至还可以包含另一个列表或者元组作为元素,如下
a = (1, 2, 3.14, 'hello', [7,8,9] )
最后一个元素 就是 另外的一个列表对象 [7,8,9],如果元组中只有一个元素,必须要在后面加上逗号,像这样
a = (1, )
否则 这样写的话
a = (1)
a就是 数字1 了, 而不是包含 数字1 的元组。定义元组还可以去掉圆括号,像这样
a = 1, 2, 3.14, 'hello'
但是这样定义的时候,如果元组中只有一个元素,必须要在后面加上逗号,像这样
a = 1,
2. 元组的sequence操作
刚才说了,元组也是有sequnce特性的。当然也支持sequence操作。就是支持用元素索引的方式取出里面的元素; 也支持用切片操作 截取一部分内容作子列表。
元组的 索引和切片操作和 列表、字符串是 类似的。
比如
a = (1, 2, 3.14, 'hello', [7,8,9])
a[0] # 就是 1
a[1] # 就是 2
a[4] # 就是 [7,8,9]
a[-1] # 也是 [7,8,9]
a[-4] # 也是 2
a[-1][0] # a[-1] 是[7,8,9], a[-1][0] 就是 [7,8,9] 里面的第一个元素,就是 7
元组的切片也后字符串类似,想象用刀去切取其中的一部分,该在哪里下刀,就使用哪里的索引:
a = (1, 2, 3.14, 'hello', [7,8,9])
a[0:3] # 结果是 (1, 2, 3.14)
a[:3] # 结果也是 (1, 2, 3.14)
a[3:5] # 结果是 ('hello', [7,8,9])
a[3:] # 结果也是 ('hello', [7,8,9])
a[-1][:2] # 结果是 [7,8] 为什么? 自己想一想
3. 元组内容不可变
和列表不同,元组对象的内容是不可以变化的,比如
a = (1, 2, 3.14, 'hello', [7,8,9])
a[0] = '你好'
执行上面的代码,解释器会报如下错误
Traceback (most recent call last): File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
意思是说元组的内容是不可以改变的。
但是元组中的列表的内容却是可以改变的,比如
a = (1, 2, 3.14, 'hello', [7,8,9])
a[-1][0] = '你好'
print(a)
结果 a的值就变成了
(1, 2, 3.14, 'hello', ['你好', 8, 9])
4. 总结
经过上面的介绍,list是不是像恋爱中的小姐姐呢,有什么事,高兴就行,元组呢?是不是像已经拿拿红本本的小姐姐,有规定的,你得按照我们结婚前的约定来办,工资全上交,私房钱看心情,小姐姐说了算,你可不能擅自做主的哟!但是小姐姐心情好,就可以改变一下,给你涨点!!!: )
更多内容,请移步到白月黑羽Python教程!