python_元组

**

Tuple(元组)

**

元组(tuple)是 Python 中另一个重要的序列结构,和列表类似,元组也是由一系列按特定顺序排序的元素组成。

元组和列表(list)的不同之处:
1、列表的元素是可以更改的,包括修改元素值,删除和插入元素,所以列表是可变序列;
2、而元组一旦被创建,它的元素就不可更改了,所以元组是不可变序列元组
3、列表写在[]里,而元组写在小括号 ( ) 里,元素之间用逗号 , 隔开。

创建元组

  1. 使用 ( ) 直接创建
    通过( )创建元组后,一般使用=将它赋值给某个变量,具体格式为:
    tuplename = (element1, element2, …, elementn)
    其中,tuplename 表示变量名,element1 ~ elementn 表示元组的元素。

例如,下面的元组都是合法的:

num = (7, 14, 21, 28, 35)
course = ("Python教程", "yyds")
abc = ( "Python", 19, [1,2], ('c',2.0) )

在 Python 中,元组通常都是使用一对小括号将所有元素包围起来的,但小括号不是必须的,只要将各元素用逗号隔开,Python 就会将其视为元组,请看下面的例子:

course = "百度", "http://www.baidu.com"
print(course)
运行结果为:
('百度', 'http://www.baidu.com')

当创建的元组中只有一个字符串类型的元素时,该元素后面必须要加一个逗号,,否则 Python 解释器会将它视为字符串。请看下面的代码:

#最后加上逗号
a =("http://c.biancheng.net/cplus/",)
print(type(a)) #<class 'tuple'>
#最后不加逗号
b = ("http://c.biancheng.net/socket/")
print(type(b)) #<class 'str'>
  1. 使用tuple()函数创建元组
    除了使用( )创建元组外,Python 还提供了一个内置的函数 tuple(),用来将其它数据类型转换为元组类型。
tuple() 的语法格式如下:
tuple(data)

data 表示可以转化为元组的数据,包括字符串、元组、range 对象等。

#将字符串转换成元组
tup1 = tuple("hello")
print(tup1)
#将列表转换成元组
list1 = ['Python', 'Java', 'C++', 'JavaScript']
tup2 = tuple(list1)
print(tup2)
#将字典转换成元组
dict1 = {'a':100, 'b':42, 'c':9}
tup3 = tuple(dict1)
print(tup3)
#将区间转换成元组
range1 = range(1, 6)
tup4 = tuple(range1)
print(tup4)
#创建空元组
print(tuple())

使用元组

与列表类似,元组可以使用下标索引来访问元组中的值
	元组变量 [ 索引值 ]
	tup1 = ('Google', 'Neuedu', 1997, 2000)
	tup1[1]) # 'Neuedu'
	
	元组同样可以被截取、连接、重复,运算后会生成新的元组
	元组变量 [ 头下标:尾下标 ]
	tuple = ( 'abcd', 786 , 2.23, 'neuedu', 70.2  )
	tinytuple = (123, 'neuedu')
 
	print (tuple)             # 输出完整元组
	print (tuple[0])          # 输出元组的第1个元素
	print (tuple[1:3])        # 输出从第2个到第3个元素
	print (tuple[2:])         # 输出从第3个元素开始的所有元素
	print (tinytuple * 2)     # 输出两次元组
	print (tuple + tinytuple) # 连接元组

('abcd', 786, 2.23, 'neuedu', 70.2)

修改元组

	元组中的元素值是不允许修改的。
	tup = (1, 2, 3, 4, 5, 6)
 	tup[0] = 11  # 修改元组元素的操作是非法的
	TypeError: 'tuple' object does not support item assignment
	
	虽然元素值是不允许修改的,但我们可以对元组进行连接组合
	tup1 = (12, 34.56);
	tup2 = ('abc', 'xyz')
	tup3 = tup1 + tup2;  # 创建一个新的元组
	print (tup3) #(12, 34.56, 'abc', 'xyz')
	
	元组中可以包含可变的对象,比如列表,但通常不这样做
	 tup = ([1,2,3,4])
	 type(tup) #<class 'list'>
	 tup = ([1,2,3,4],)
	 type(tup)  # <class 'tuple'>
	 tup[0] # [1, 2, 3, 4]
	 tup[0][1] #2
    tup[0] = [11,22,3 ] #TypeError: 'tuple' object does not support item assignment

 	tup[0][1] = 222
	 tup[0][1]  # 222
思考下列代码中,元组的内容为什么可以改变
t = ('a', 'b', ['A', 'B'])
t[2][0] = 'X'
t[2][1] = 'Y'
print(t) # ('a', 'b', ['X', 'Y'])

表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list。
tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向’a’,就不能改成指向’b’,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

删除元组
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组

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

元组运算符

表达式						结果		描述
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	            元素是否存在
print*for x in (1, 2, 3)) 	1 2 3	  迭代

元组函数

函数			作用
len(tuple)	获得元组元素个数
max(tuple)	返回元组元素最大值
min(tuple)	返回元组元素最小
tuple(seq)	将列表转换为元组
tuple1 = ('Google', 'Neuedu', 'Taobao')
len(tuple1)  #3

tuple2 = ('5', '4', '8')
max(tuple2) #'8'

tuple2 = ('5', '4', '8')
min(tuple2)  # '4'

list1= ['Google', 'Taobao', 'Neuedu', 'Baidu']
tuple1=tuple(list1)
tuple1 #('Google', 'Taobao', 'Neuedu', 'Baidu')
  • end -
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值