概述
1、元组定义
定义
tuple = (1,2,3)
1.1、元组是不可改变的列表。用于保存程序中不可修改的内容。
1.2、元组是有序的,不可修改的,元素以逗号分割, 以小括号包围的序列。
案例
tuple = tuple("123456")
print(tuple)
print("".join(tuple))
输出:
('1', '2', '3', '4', '5', '6')
123456
2、创建元组
2.1、直接创建
方法
tuple=(n1,n2...nn)
2.2、创建空元组
方法
tuple=()
2.3、创建数值元组
方法
tuple(data)
参数
data:可以转化为元组的数据,可以是range对象、字符串、元组或其他可迭代类型的数据。
案例
创建一个10-20(不包括20)之间所有偶数的元组:
tuple1=tuple(range(10,20,2))
print(tuple1)
输出”(10, 12, 14, 16, 18)
注:使用tuple()函数不仅能通过range对象创建元组,还可以通过其他对象创建元组。
3、访问元组元素
3.1、访问整个元组
方法
print(tuple)
/返回整个元组内容
案例
tuple=("ABC","世界","美好")
print(tuple)
输出:
('ABC', '世界', '美好')
3.2、访问元组中的某个元素
方法
tuple[index]
/从左往右返回查找到的第一个指定元素的索引,如果没有找到会报错。
案例
tuple = (1,2,3,4,5,'hello')
print(tuple[3])
输出:4
4、修改元组元素
4.1、元组不能直接修改
案例
tuple=(1,2,3,4,5,6)
tuple[5]=8
print(tuple)
输出:TypeError: 'tuple' object does not support item assignment
4.2、给元组重新赋值
案例
tuple=(1,2,3,4,5,6)
tuple=(1,2,3,4,5,8)
print(tuple)
输出:(1, 2, 3, 4, 5, 8)
4.3、对元组进行连接组合
案例
tuple=(1,2,3,4,5,6)
tuple=tuple+("A","B","C")
print(tuple)
输出:(1, 2, 3, 4, 5, 6, 'A', 'B', 'C')
说明
1、在进行元组连接时,连接的内容必须都是元组。不能将元组和字符串或列表进行连接。
2、在进行元组连接时,如果要连接的元组只有1个元素时,一定不要忘记后面的逗号,否则会报错。
例如:
tuple=(1,2,3,4,5,6)
tuple=tuple+("A",)
print(tuple)
输出:(1, 2, 3, 4, 5, 6, 'A')
tuple=(1,2,3,4,5,6)
tuple=tuple+("A")
print(tuple)
输出:TypeError: can only concatenate tuple (not "str") to tuple
5、元组推导式
5.1、案例
生成一个包括10个随机数的列表,要求数的范围在10-100(包括)之间:
代码如下:
import random
tuple = (random.randint(10,100) for i in range(10))
print("生成的随机数元组:",tuple)
生成的随机数元组: <generator object <genexpr> at 0x000001C4B280E8B8>
5.2、把生成器对象转化为元组/列表
1、从上面的执行结果可见,使用元组推导式生成的结果是一个生成器对象而不是一个元组或列表。
2、把生成器对象转化为元组用 tuple()函数,转化为列表用list()函数。
转化如下:
import random
num = (random.randint(10,100) for i in range(10))
num=tuple(num)
print("生成的随机数元组为:",num)
num=list(num)
print("生成的随机数列表为:",num)
输出:
生成的随机数元组为: (92, 67, 79, 66, 28, 13, 92, 36, 71, 14)
生成的随机数列表为: [92, 67, 79, 66, 28, 13, 92, 36, 71, 14]
5.3、用for循环遍历生成器对象
通过推导式生成一个包含3个元素的生成器对象num,用for循环遍历该生成器对象并输出每个元素,再将生成器对象num转化为元组输出。
num=(i for i in range(3))
for i in num:
print(i,end=" ")
num=tuple(num)
print("转化后:",num)
输出:
0 1 2
转化后: ()
通过推导式生成一个包含3个元素的生成器对象num,再将生成器对象num转化为元组输出。
num=(i for i in range(3))
num=tuple(num)
print("转化后:",num)
输出:转化后: (0, 1, 2)
5.4、用next()方法遍历生成器对象
通过推导式生成一个包含3个元素的生成器对象num,调用next()方法输出每个元素,再将生成器对象num转化为元组输出。
num=(i for i in range(3))
print(num.__next__()) #输出第1个元素
print(num.__next__()) #输出第2个元素
print(num.__next__()) #输出第3个元素
num=tuple(num)
print("转化后:",num)
输出:
0
1
2
转化后: ()
5.5、生成器是python2.4版本之后出现的一个新概念,生成器内部本身没有可迭代的对象,只有这些对象的生成规律,在我们遍历或者使用的过程中及时生成。
tuple = [num for num in range(3)]
print(tuple)
#形成一个生成器对象
输出:[0, 1, 2]
for i in tuple:
print(i)
输出:
0
1
2
6、元组的索引
元组的索引和字符串完全一致,参考字符串的索引。
案例
mytuple = tuple("0123456789")
print(mytuple)
输出:('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')
print(mytuple[0])
输出:0
print(mytuple[2])
输出:2
print(mytuple[-1])
输出:9
print(mytuple[0:6])
输出:('0', '1', '2', '3', '4', '5')
print(mytuple[0:])
输出:('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')
print(mytuple[:8])
输出:('0', '1', '2', '3', '4', '5', '6', '7')
print(mytuple[0:9:2])
输出:r('0', '2', '4', '6', '8')
print(mytuple[::2])
输出:('0', '2', '4', '6', '8')
print(mytuple[::-1])
输出:('9', '8', '7', '6', '5', '4', '3', '2', '1', '0')
7、元组的特性
7.1、元组可以不加括号。
案例
tuple = 1,2 或
tuple = (1,2)
print(tuple)
输出:(1, 2)
7.2、元组可以不加等号。
案例
tuple = 1,2 或
tuple
(1,2)
print(tuple)
输出:(1, 2)
7.3、单元素元组需要加逗号。
说明
(1)定义只有1个元素的元组时,要加逗号。
(2)Python在显示只有1个元素的tuple时,也会加一个逗号 , 以免误解成数学计算意义上的括号。
案例
print(type((1)))
print(type((1,)))
print(type(("a")))
print(type(("a",)))
输出:
<class 'int'>
<class 'tuple'>
<class 'str'>
<class 'tuple'>
7.4、元组不可修改。
案例
a = (1,2,3)
a[0] = 1
输出:TypeError: 'tuple' object does not support item assignment
7.5、定义时,元组的元素要确定下来。
案例
因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。
tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,
比如:
t = (1, 2)
7.6、元组的指向不变。
可变的tuple:
(1)当我们把list的元素 'A' 和 'B' 修改为 'X' 和 'Y' 后,表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。
(2)即指向 'a' ,就不能改成指向 'b' ,指 向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
理解了“指向不变”后,要创建一个内容也不变的tuple那就必须保证tuple的每一个元素本身也不能变。
7.7、如果元组中有子列表,那么子列表中的值是可以修改的。
tuple2=(100,[200,201])
tuple2[1][0]=666
print(tuple2)
# 输出:(100, [666, 201])
最后
以上就是犹豫冷风为你收集整理的Python序列应用-元组的全部内容,希望文章能够帮你解决Python序列应用-元组所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复