任务:
- 学习元组的定义
- 如何遍历元组
- 修改元组变量
- 学习if语句的使用
- 条件表达式
元组
列表非常适合用于存储在程序运行期间可能变化的数据集。然而,有时候你需要创建一 系列
不可修改
的元素,元组可以满足这种需求。Python将不能修改的值称为不可变
的 ,而不可变的列表
被称为 元组
元组的定义–不可修改的列表
元组看起来很像列表,但使用圆括号而非中括号来标识。定义元组后,就可使用索 引来访问其元素,就像访问列表元素一样
dimensions = (200, 50)
print(dimensions[0])
print(dimensions[1])
-
在Python中,元组(tuple)是一种不可变的序列类型,意味着你不能更改元组中的元素。因此,当你尝试对元组的某个元素赋值时,就会触发
TypeError
错误,提示'tuple' object does not support item assignment
,意味着你不能给元组对象分配项。解决方法:
如果你需要修改元组中的数据,你需要创建一个新的元组。一种常见的方法是将元组转换成列表,修改列表后再将其转换回元组。
TypeError: 'tuple' object does not support item assignment
#由于试图修改元组的操作是被禁止的,因此Python指出不能给元组的元素赋值的错误提醒
-
注意
严格地说,元组是由逗号标识的,圆括号只是让元组看起来更整洁、更 清晰。如果你要定义只包含一个元素的元组,必须在这个元素后面加上逗号 –逗号就是他的本体。
tuple = 1,2,3,2, #正确 圆括号没啥作用
print(tuple[3]) #输出2
tuple = 1 #识别为int类型的数
print(tuple[0]) #错误
tuple = (1) #识别为int类型的数
print(tuple[0]) #错误
tuple = 1, #识别为元组,注意单个元素如何成为元组
print(tuple[0]) #正确 输出1
#当然最好加上():给元组穿上衣服
tuple = (1,2,3,2,) #正确
tuple = (1,) #正确
遍历元组
方法同遍历列表 ——使用for循环来遍历元组中的所有值
tuples = (1,2,3,4,5,6)
for tuple in tuples:
print(tuple) #依次输出1 2 3 4 5 6
修改元组变量
元组不可修改,但是存储元组的变量可以修改
因为给元组变量重新赋值是合法的
tuples = (1,2,3,4,5,6)
tuples = (3,4,5)
- 相比于列表,元组是更简单的数据结构。如果需要存储的一组值在程序的整个生命周期内都不变,就可以使用元组。
if语句–用于条件判断
在Python中,if 语句让你能够检查程序的当前状态,并采取相应的措施
格式如下:
if 条件测试 :
操作(条件测试为Ture执行)#小技巧:按住shift+tab结束缩进
else: #else以及后面的操作可以不要
操作(条件测试为False执行)
示例:
tuples = (1,2,3)
for tuple in tuples:
if tuple == 1: #python中“==”才是判断是否相等,“=”为赋值
print(tuple)
else:
print(f"{tuple}不是1")
#1
#2不是1
#3不是1
条件测试
每条if 语句的核心都是一个值为True 或False 的表达式,即条件测试
据条件测试的值为True 还是False 来决定是否执行if 语句中的代码
大多数条件测试将一个变量的当前值同特定值进行比较
测试相等“==”——相等运算符
检查变 量的值是否与特定值相等
car == "BWM" #检查字符串是否相等,真为True 假为Flase
tuple[1] == 1 #检查数值是否相等
- 注意 python中是严格区分大小写的,即两个大小写不同的值被视为不相 等
car = "BWM"
car == "bwm" #值为False
#当需要不区分大小写时
car = "BWM"
print(car.title() == "bWm".title())
#甚至
car = " BWm "
print(car.strip().title() == "bWm ".strip().title())
#True
测试不相等“!=”——不等运算符
编写的大多数条件表达式检查两个值是否相等,但有时候检查两个值是否不等的 效率更高。
car = "BWM"
car != "bwm" #True
car != 1 #True
小于(<)、小于等于(<=)、大于(>)、大于等于(>=)
检查多个条件
关键字and 和or
同时检查多个条件
-
and 且 : 在两个条件都为True 时才执行相应的操作,
or 或者: 只要求其中一个条件为True 则为True
关键字in-包含
检查列表是否包含特定的值,即某个值是否在列表中
格式:
XXX in 列表名/元组名/range(X,X)
print(6 in range(5,8)) #True
tuple = 1,2,3,2,
print(2 in tuple) #判断2是否在元组中True
list =[1,2,3,4,5]
print(2 in list) #判断2是否在列表中True
使用:
- 结束用户的注册过程 前,可能需要检查他提供的用户名是否已包含在用户名列表中。
- 在地图程序中,可能需要检查用户提交的位置是否包含在已知位置列表中
关键字not in-不包含
还时候,确定特定的值未包含在列表中很重要。
在这种情况下,可使用关键字 not in 。
布尔表达式
本质上就是条件测试
与条件表达式一样,布尔表达式的结果要么为True ,要么为False 。
布尔值: True False
if语句的三种结构
if单独使用:conditional_test为真则执行,否则忽略
if conditional_test:
do something
if - else:条件测试通过时执行一个操作,在没有通过时执行另一个操作。
if conditional_test:
do something
else:
do something
if-elif-else:检查超过两个的情形。
它依次检查每个条件测 试,直到遇到通过了的条件测试.
测试通过后,Python将执行紧跟在它后面的代 码,并跳过余下的测试
if conditional_test:
do something
elif: #可根据需要使用多个elif代码块
do something
else: #可根据需要不使用else代码块
do something
- if-elif-else最后只能得到一种结果,有时需要多个结果时可重复使用独立的if语句
总之,如果只想执行一个代码块,就使用if-elif-else 结构;如果要执行多个代 码块,就使用一系列独立的if 语句。
列表的遍历与if语句灵活运用
对于列表中的元素,可以使用if进行条件判断,来达到程序设计要求
判断列表不为空
在运行for 循环前确定列表是否为空很重 要
if 列表名:
列表不为空时执行的操作
对于两个列表进行操作
判断列表一与列表二共有元素组成列表三 , 不共有元素组成列表四
list1 =[1,2,3,4,5]
list2 = [2,4,6,7,1]
list3 = []
list4 = []
for list in list1:
if list in list2:
list3.append(list)
else:
list4.append(list)
for list in list2:
if list not in list4 and list not in list3 :
list4.append(list)
print(f"{list3}为两个列表共有元素")
print(f"{list4}为两个列表独有的元素")
扩展知识-元组和列表之间的转换
如何将元组转化成列表进行增删换?
方法:
#利用list()方法,将元组作为参数返回列表
tuple = ("apple","banana","book")
list = list(tuple)
#即可实现list的append(),pop(),list[0]="love"等
tuple = tuple(list)
#将list转回元组
-
值得注意的是:
转换后的对象是独立的,修改其中一个不会影响到另一个。