【python学习笔记】元组

元组

元组和列表最大的区别就是:

① 列表可以修改元素,添加和删除元素      ② 元组是不可改变的,不可直接修改

1.创建元组

元组大部分时候用的是小括号

>>> tuple1 = (1,2,3,4,5,6,7,8,9)
>>> tuple1
(1, 2, 3, 4, 5, 6, 7, 8, 9)
>>> 

2.访问元组

>>> tuple1[1]
2
>>> tuple1[5:]
(6, 7, 8, 9)
>>> tuple1[:5]
(1, 2, 3, 4, 5)
>>> 

3.复制元组

利用分片的方法来复制一个元组

>>> tuple2 = tuple1[:]
>>> tuple2
(1, 2, 3, 4, 5, 6, 7, 8, 9)
>>> 

注意,不可直接修改元组内的元素:

>>> tuple1[1] = 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

4.元组并不是都有小括号

有小括号的并不是元组

>>> temp = (1)
>>> type(temp)
<class 'int'>
>>> 

没小括号的也可能是元组

>>> temp = 1,2,3
>>> type(temp)
<class 'tuple'>
>>> 

判断是否为元组类型,(,)才是关键,小括号只是起补充的作用

创建空元组,直接用小括号就行

>>> temp = ()
>>> type(temp)
<class 'tuple'>

如果要创建的元组只有一个元素,请在后面加上一个逗号(,),这样才能证明它是个元组,而不是其他类型

>>> temp1 = (1)
>>> type(temp1)
<class 'int'>
>>> temp2 = (2,)
>>> type(temp2)
<class 'tuple'>
>>> temp3 = 1,
>>> type(temp3)
<class 'tuple'>
>>> 

再举个例子:

>>> 8 * (8)
64
>>> 8 * (8,)
(8, 8, 8, 8, 8, 8, 8, 8)

5.更新和删除元组

间接修改元组内的元素:通过拷贝现有的字符串片段狗造成一个新的字符串的方式

>>> name = ('字母罗', '煤球', '内马尔')
>>> name = name[:2] + ('国足',) + name[2:]
>>> name
('字母罗', '煤球', '国足', '内马尔')
>>> 

同理,删除元组内的元素:

>>> name = name[:2] + name[3:]
>>> name
('字母罗', '煤球', '内马尔')
>>> 

删除整个元组

>>> del name
>>> name
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'name' is not defined

日常使用上,很少用del删除整个元组,因为python的回收机制会在元组不再被使用的时候自动删除

另外操作符也同样可以在元组使用

作业题:

1.描述一下元组和列表?
列表:大仓库,可以随意添加和删除

元组:封闭的列表,一旦定义,不可以改变

2.什么情况下需要使用元组而不是列表?
希望内容不被轻易修改的时候,我们使用元组

需要频繁修改数据的时候,使用列表

3.x,y,z = 1,2,3  x,y,z是元组吗?

所有的多对象的、逗号分隔的、没有明确用符号定义的这些集合默认的类型都是元组

>>> x,y,z = 1,2,3
>>> h = x,y,z
>>> type(h)
<class 'tuple'>
>>> 

4.python3没有元组推导式,为什么'tuple1 = (x**2 for x in range(10))'没有报错?

>>> tuple1 = (x**2 for x in range(10))
>>> tuple1
<generator object <genexpr> at 0x00000237A3DC0E60>
>>> tuple1.__next__()
0
>>> tuple1.__next__()
1
>>> tuple1.__next__()
4
>>> tuple1.__next__()
9
>>> tuple1.__next__()
16
>>> tuple1.__next__()
25
>>> tuple1.__next__()
36
>>> tuple1.__next__()
49
>>> tuple1.__next__()
64
>>> 

猜你喜欢

转载自blog.csdn.net/mr_humi/article/details/80791205