Python元组类型

来自CloudWiki
跳转至: 导航搜索

元组的基本概念

列表的功能虽然很强大,但负担也很重,在很大程度上影响了运行效率。有时候我们并不需要那么多功能,很希望能有个轻量级的列表,元组(tuple)正是这样一种类型。

  • 元组是一个轻量级的序列类型
  • 元组的元素不能够修改
  • 从形式上,元组的所有元素放在一对圆括号中,元素之间使用逗号分隔,如果元组中只有一个元素则必须在最后增加一个逗号。

创建元组

>>> tup1 = ('Google', 'Runoob', 1997, 2000)
>>> tup2 = (1, 2, 3, 4, 5 )
>>>list1= ['Google', 'Taobao', 'Runoob', 'Baidu']
>>>tuple1=tuple(list1)
>>>print(tuple1)
>>> tup1 =()
>>> type(tup1)
<class 'tuple'>
 <nowiki>>>> t= (1,2,3)

访问元组

元组可以使用下标索引来访问元组中的值,如下实例:

>>> L = ('Google', 'Taobao', 'Runoob')
>>> L[:-1]
('Google', 'Taobao')
>>> L[1:2]
('Taobao',)
>>> L[0]
'Google'
>>> L[-1]
'Runoob'
>>> L[::2]
('Google', 'Runoob')


修改元组

tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
 
# 以下修改元组元素操作是非法的。
# tup1[0] = 100
 
# 创建一个新的元组
tup3 = tup1 + tup2
print (tup3)

删除元组

tup = ('Google', 'Runoob', 1997, 2000)
 
print (tup)
del tup
print ("删除后的元组 tup : ")
print (tup)

元组的运算符

>>> 1 in t
True
>>> "1" in t
False


>>> s=(4,5,6)


>>> t+s
(1, 2, 3, 4, 5, 6)


>>> t*2
(1, 2, 3, 1, 2, 3)


>>> 2*t
(1, 2, 3, 1, 2, 3)

>>> len(t)
3

>>> min(t)
1

>>> max(t)
3

>>> t.index(2)
1

>>> t.count(1)
1

for x in (1, 2, 3):
    print (x)


元组类型主要在Python语法相关的场景使用,例如,当函数返回多个值时,多个返回值以元组类型返回,实际返回的一个数据类型

>>> def f(x):
	return x,x+1,x+2

>>> f(1)
(1, 2, 3)

>>> type(f(1))
<class 'tuple'>

应用:函数的返回值

问题解决:坐标函数

比如在游戏中经常需要从一个点移动到另一个点,给出坐标、位移和角度,就可以计算出新的坐标:

import math

def move(x, y, step, angle=0):
    nx = x + step * math.cos(angle)
    ny = y - step * math.sin(angle)
    return nx, ny

import math语句表示导入math包,并允许后续代码引用math包里的sin、cos等函数。

然后,我们就可以同时获得返回值:

>>> x, y = move(100, 100, 60, math.pi / 6)
>>> print(x, y)
151.96152422706632 70.0

但其实这只是一种假象,Python函数返回的仍然是单一值:

>>> r = move(100, 100, 60, math.pi / 6)
>>> print(r)
(151.96152422706632, 70.0)

原来返回值是一个tuple!但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。


练习

1.关于Python的元组类型,以下选项中描述错误的是‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

A.Python中元组采用逗号和圆括号(可选)来表示

B.一个元组可以作为另一个元组的元素,可以采用多级索引获取信息

C.元组一旦创建就不能被修改

D.元组中元素不可以是不同类型


2.关于Python的元组类型,以下选项中描述错误的是‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

A.一个元组可以作为另一个元组的元素,可以采用多级索引获取信息

B.元组中元素不可以是不同类型

C.Python中元组采用逗号和圆括号(可选)来表示

D.元组一旦创建就不能被修改