元组(tuple)和列表很像,都可以保存多个有顺序的数据。不同点是:元组创建后不能修改。
元组
元组使用圆括号 () 创建。当元组只有一个元素时,必须在元素后面加逗号,否则 Python 会把它当作普通括号表达式。
point = (3, 4)
single = (8,)
print(point[0]) # 3
print(point[1]) # 4元组适合保存“不应该被随意修改”的一组数据,例如坐标、日期、颜色值等。
坐标距离
下面用两个元组表示二维平面上的点。
import math
p1 = (0, 0)
p2 = (3, 4)
distance = math.sqrt((p1[0] - p2[0]) ** 2 + (p1[1] - p2[1]) ** 2)
print("距离:%.1f" % distance)运行结果:
距离:5.0知识测验
题目
只包含一个元素的元组应该怎么写?
序列统计函数
很多内置函数(built-in function)可以直接作用在序列上:
len():获取序列长度。max():获取最大值。min():获取最小值。sum():计算总和。any():只要有一个元素为真,结果就是True。all():所有元素都为真,结果才是True。
lst = [4, 0, 1, 3, 2]
tup = (8, 5, 7, 9)
print(len(lst)) # 5
print(len(tup)) # 4
print(max(lst)) # 4
print(min(tup)) # 5
print(sum(lst)) # 10
print(sum(tup)) # 29any() 和 all() 常用于判断“一组条件”是否满足。
scores = [85, 92, 78]
print(all(score >= 60 for score in scores)) # True
print(any(score >= 90 for score in scores)) # Truescore >= 60 for score in scores 是生成器表达式(generator expression)。它会依次计算每个 score >= 60,再把一串 True / False 交给 all()。
互动实验
any() 与 all() 真假判断实验
访问权限免费
点击每个条件切换真假。any() 只需一盏绿灯,all() 要求全部亮绿灯。
any(values)false
all(values)false
知识测验
题目
all([True, True, False]) 的结果是什么?
动手练习
找出离原点最近的坐标
给定一个由坐标元组组成的列表,计算每个点到原点的距离,并找出最近的那个点。
- 准备一个 points 列表,每个元素都是 (x, y) 元组。
- 计算每个点到原点的距离。
- 输出距离最小的那个点。