Python基础(3)——元组(tuple)的定义与基本操作
·
一、元组的定义
#当定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来
>>> tup1 = ('Google', 'Runoob', 1997, 2000)
- Python 的元组与列表类似,不同之处在于元组的元素一旦初始化就不能修改 ( 因此元组又称为只读列表 )。不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。
- 元组使用小括号 ( ),列表使用方括号 [ ]。
- 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用。
>>> tup1=()
>>> type(tup1) #创建空元组
<class 'tuple'>
>>> tup2=(50)
>>> type(tup2) #不加逗号,类型为整型
<class 'int'>
>>> tup3=(50,) #加上逗号,类型为元组
>>> type(tup3)
<class 'tuple'>
-
在Python中,很多人认为元组创建需要使用(),其实不然,真正决定元组的形式是逗号。
>>> tup='a','b',1,2
>>> type(tup)
<class 'tuple'>
二、元组的基本操作
元组与字符串类似,下标索引从0开始,可以进行截取,组合等。
1、访问元组
元组可以使用下标索引来访问元组中的值,如下实例:
tup1 = ('Google', 'Runoob', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
print ("tup1[0]: ", tup1[0]) #读取元组tup1中的第一个元素
print ("tup2[1:5]: ", tup2[1:5]) #截取元素,从tup2中的第二个到第五个元素
运行结果:
tup1[0]: Google
tup2[1:5]: (2, 3, 4, 5)
2、修改元组
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:
tup1 = (12, 34.56);
tup2 = ('abc', 'xyz')
# tup1[0] = 100 这样修改元组元素操作是非法的,会报错(TypeError: 'tuple' object does not support item assignment)
# 创建一个新的元组:两个元组连接起来
tup3 = tup1 + tup2
print (tup3)
运行结果:
(12, 34.56, 'abc', 'xyz')
3、删除元组
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:
tup = ('Google', 'Runoob', 1997, 2000)
print (tup)
del(tup) #删除元组tup
print ("删除后的元组 tup : ")
print (tup)
运行结果:
('Google', 'Runoob', 1997, 2000)
删除后的元组 tup :
Traceback (most recent call last):
File "D:\st13\python\1.11\lx.py", line 6, in <module>
print (tup)
NameError: name 'tup' is not defined
4、元组运算符
与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。
len((1, 2, 3)) | 3 | 计算元素个数 |
(1, 2, 3) + (4, 5, 6) | (1, 2, 3, 4, 5, 6) | 连接 |
('Hi!',) * 4 | ('Hi!', 'Hi!', 'Hi!', 'Hi!') | 复制 |
3 in (1, 2, 3) | True | 元素是否存在 |
for x in (1, 2, 3): print (x) | 1 2 3 | 迭代 |
5、元组索引,截取
因为元组也是一个序列,所以我们可以访问元组中的指定位置的元素,也可以截取索引中的一段元素,如下所示:
>>> tup1 = ('Google', 'Runoob', 1997, 2000)
>>> tup1[2] #读取第三个元素
1997
>>> tup1[-1] #反向读取,读取倒数第一个元素
2000
>>> tup1[1:] #截取元素,从第二个开始后的所有元素。
('Runoob', 1997, 2000)
5、元组内置函数
5.1> len(tuple) :计算元组元素个数
>>> tup1 = ('Google', 'Runoob', 1997, 2000)
>>> len(tup1)
4
5.2> max(tuple) :返回元组中元素最大值
>>> tup2=(5,4,6,1,9) #元素必须为同一类型的数据类型
>>> max(tup2)
9
>>> tup3=('9','3','2','0')
>>> max(tup3)
'9'
5.3> min(tuple) :返回元组中元素最小值
>>> tup1=(5,4,6,1,9)
>>> min(tup1)
1
>>> tup2=('9','3','2','0')
>>> min(tup2)
'0'
5.4> tuple(seq) :将列表转换为元组
>>> list1 = ['Google', 'Runoob', 1997, 2000]
>>> tup1=tuple(list1)
>>> print(tup1,type(tup1))
('Google', 'Runoob', 1997, 2000) <class 'tuple'>
5.5> sum(tuple) :求元组中的元素之和
>>> tup1=(2,4,3,6,7) #元组中的元素必须全部为int或float类型
>>> sum(tup1)
22
6、元组的方法(元组没有列表中的增、删、改的操作,只有查的操作)
6.1> tuple.index(obj):从元组中找出某个值第一个匹配项的索引值
>>> tup1=(1,2,3,5,6,2)
>>> tup1.index(2) #2出现了两次,只返回第一个匹配项的索引值
1
6.2> tuple.count(obj): 统计某个元素在元组中出现的次数
>>> tup1=(1,2,3,5,6,2,5,8,3,2,7)
>>> tup1.count(2) #统计2出现的次数
3
三、元组的使用实例
下面的代码是判断输入的日期是当年的第几天。将闰年和平年每月的天数分别存入元组tup1、tup2,然后判断查询的年份是平年还是闰年,分别计算天数即可。
year=int(input("请输入需要查询的年:"))
month=int(input("请输入需要查询的月:"))
day=int(input("请输入需要查询的天:"))
tup1=(31,29,31,30,31,30,31,31,30,31,30,31) #闰年
tup2=(31,28,31,30,31,30,31,31,30,31,30,31) #平年
if year%400==0 or (year%4==0 and year%100!=0): #闰年
days=sum(tup1[:month-1])
fin=days+day
print(month,"月",day,"日是",year,"年的第",fin,"天")
else:
days=sum(tup2[:month-1])
fin=days+day
print(month,"月",day,"日是",year,"年的第",fin,"天")
运行结果:
请输入需要查询的年:2019
请输入需要查询的月:12
请输入需要查询的天:31
12 月 31 日是 2019 年的第 365 天
更多推荐
已为社区贡献6条内容
所有评论(0)