元组tuple,也是一种sequence特性的类型,也可以存储任何数据类型的数据对象,跟列表相似,元组不能在原处修改。元组不支持任何方法调用,但是元组具有列表的大多数属性。
但是要记住的是:元组的不可变性只适用于元组本身,并非其内容。例如元组内部的列表是可以像往常一样修改的。
在下表中,如果元组中只有一个元素,必须要在最后面加上逗号。
在元组中也可以包含列表,或者元组作为元素。
a = (1)
这个就是数字1。
- a = (1)
-
- print(type(a))
可以看到该变量的数据类型是整形。
元组的sequence操作:切片操作。
和列表不同,元组对象的内容是不可变化的。
- a = (1, 2, 3.14, 'hello', [7,8,9])
- a[0] = '你好'
tuple对象,元组对象不支持元素复制。
判断元素是否在列表中或元组中,成员关系:
我们需要检查列表、元组对象中是否存储我们想要找的元素,我们通过in这个关键字。
- list1 = [1,2,3,4, 'hello']
- tuple1 = (1,2,3,4, 'hello')
-
- if 'hello' in list1:
- print('hello 在列表中存在')
-
- if 'boy' not in tuple1:
- print('boy 在元组中不存在')
多个变量同时赋值:
可以把列表或者元组中的元素直接赋值给变量。
- x, y = (1, 2)
- print(x, y)
-
-
- name, age = ['zhangfei', 33]
- print(name, age)
这个时候需要注意的是:变量的个数一定要和列表/元素中的元素个数相等。
函数返回列表或者元组:
函数的返回值可以是一个列表或者元组对象。
- def func1():
- age = input("Please input age: ")
- gender = input("Please input gender: ")
-
- return [age, gender]
-
-
- age, gender = func1()
-
- print(age, gender)
也可以放在元组中,甚至括号也可以去掉。
- def func1():
- age = input("Please input age: ")
- gender = input("Please input gender: ")
-
- return age, gender
-
-
- age, gender = func1()
-
- print(age, gender)
元组常量和运算:
运算 | 功能 |
() | 空元组 |
T(0,) | 1个元素的元组 |
T(0, 'Ni', 1.2, 3) | 四个元素的元组 |
T = ('abc', ('def', 'ghi')) | 嵌套元组 |
T = Tuple('spam') | 一个可迭代对象的项的元组 |
T[i] | 索引 |
T[i][j] | 索引的索引 |
T[i:j] | 切片 |
len(T) | 元组长度 |
T1 + T2 | 合并 |
T * 3 | 重复 |
for i in T: print(i) | 迭代 |
‘spam’ in T | 成员关系 |
[x ** 2 for x in T] | |
T.index('Ni') | 搜索 |
T.count('Ni') | 计数 |
例子:对元组进行排序:
- # 方法一
- T = ('cc', 'aa', 'dd', 'bb')
- tmp = list(T)
- tmp.sort()
- print(tmp)
- T = tuple(tmp)
- print(T)
-
-
- # 方法二
- T = ('cc', 'aa', 'dd', 'bb')
- print(tuple(sorted(T)))
然后我们看看sorted函数的解释:
Return a new list containing all items from the iterable in ascending order.
返回一个列表,该列表中包含所有的可迭代的元素,按升序排列。
sorted这个函数。