Python学习——第五章流程控制

前言

昨天我们学习了一些序列,今天将会补充一个序列,并学习Python的数据流的相关内容

集合

集合也是Python的一种内置类型,是一个非常有用的数据结构,它与列表的行为类似,唯一的区别在于集合不会包含重复的值
定义集合:

empty = set() #注意空集合不能使用{}定义
print("空集合",empty)
number = {1,2,3}
print("数字集合",number)
mix = set([1,"您好",3.14])
print("混合类型集合",mix)

执行结果为

空集合 set()
数字集合 {1,2,3}
混合类型集合 {3.14,1,"您好"} #除了数字集合会按定义的顺序输出外,混合类型集合会随机顺序输出

注意定义集合时,如果定义的是空集合,必须使用set()进行定义,如果包含元素,则可以使用花括号"{}"定义集合,也可以使用set加上列表来定义

在集合中添加元素可以使用add方法

number = {1,2,3}
print(number)
number.add(5)
print(number)
number.add(2)
print(number)

执行结果为

{1,2,3}
{1,2,3,5}
{1,2,3,5}

我们可以发现add方法在添加新元素时,如果新元素与原来的元素没有重复就正常添加,有相同的则不会添加

删除集合元素时可以使用remove方法和add方法一致

列表推导式,字典推导式,集合推导式

这三种推导式可以非常自然、简便的构建列表、字典、集合,列表推导式语法:用中括号括起来,中间使用for语句,后面跟着if语句用作判断,满足条件的传到for语句前面用作构建的列表

l1 = [x for x in range(5)]
print(l1)
odd = [x for x in range(10) if x % 2 !=0]
print(odd)

执行结果如下

[0,1,2,3,4]
[1,3,5,7,9]

列表推导式最擅长的方式就是对整个列表分别做相同的操作,并返回得到一个新的列表

第二种是字典推导式,与列表推导式的区别是字典元素是成对出现的,所以推导式定义的时候也是成生成键值对出现

d1 = {n:n**2 for n in range(5)}
print(d1)

d2 = {v:k for k,v in d1.items()}
print(d2)

执行结果如下

{0:0,1:1,2:4,3:9,4:16}
{0:0,1:1,4:2,9:3,16:4}

最后要介绍的是集合推导式,集合推导式与列表推导式没有什么区别,但是集合推到式会帮助我们去除重复是的元素,使用花括号

s1 = {i**2 for i in [-1,-5,1,2,-2]}
print(s1)

执行结果为

{1,4,25}

流程控制

此篇将会介绍if、while、for语句,用于改变程序的流程,在Python中没有花括号进行区别程序块,只有缩进进行区别,所以要注意缩进进行区别,注意缩进不能省略

if判断

if后的判断条件除了可以返回布尔类型外,还可以是数字或字符串、序列,对于数字来说只有判断条件为0时才会给if语句返回False,其他数字皆为True,除了0之外,当为None时也会返回False,就例如空字符串,空序列,Python中的if语句和c、java中的用法类似,只是其中的else if判断语句在Python中改为了elif,所以程序变为

if 判断条件:
	执行语句
elif 判断语句:
	执行语句
# 中间可包含多个elif
else:
	执行语句

记住else语句必须在最后,并且elif不可以脱离if存在

while循环

和c、java中的用法类似,语法为

while 表达式:
	语句一
	语句二
	········

for循环

for的用法和c、java中的用法不太一样,语法为

for 变量 in 序列
	语句一
	语句二
	·········

语句中的序列可以是列表、元组等等可迭代的对象

for x in (1,2,3,4,5,6,7,8,9,10):
	print(x)

执行的结果为

1
2
3
4
5
6
7
8
9
10

变量x将逐一遍历in后面元组的每个元素,遍历完之后结束循环

当然这种方法过于繁琐,当我们需要多次循环时 可以使用range()语句

for x in range(10):
	print(x)

会打印从0到9的数字

当然我们也可以指定开始数字和结束数字,注意区间时左闭右开

for x in range(1,10):
	print(x)

会输出1到9所有的数字,此外还可以在后边再加一个逗号和一个数字来设置步长

for x in range(1,10,2)

这将会每隔两个数字进行读取

break语句和continue语句

记住,执行到break语句直接跳出当前层的循环,而执行到continue语句跳出当前层该次循环继续执行当前层下次的循环

pass语句

pass语句是个空语句,其作用是保持程序的完整性,pass不做任何操作,一般用作占位语句,当我们在某一判断条件下不想进行任何操作,或是还没想好时,用pass进行占位,否则将会报错

for x in range(10):
	if i==3:
		pass
	else:
		print(i)

执行结果为

0
1
2
3
4
5
6
7
8
9

当这里没有pass时,将会报错,会出现pass的原因在于Python需要缩进,缩进在Python中至关重要。在Python中,行首的空格用来决定逻辑行的缩进层次,从而决定语句的分组。这意味着同一层次的语句必须要有相同的缩进,每一组这样的语句称为一个块。前面的if、while、 else和for等 都已经遇到了一行结尾是“”、后一行必须是有行首空白的情况(一般需要相对于前一行多四个空格)。不止是流程控制,在后续章节要讲到的函数、类等语法中也会用到缩进(行首空格,一般-组缩进四个空格)。在Python中,如果语法的缩进不正确,就会引起程序崩溃

循环语句中的else

例如

count = 0
while count < 5:
	print(count,"is less than 5")
	count = count+1
else:
	print(count,"is not less than 5")

执行的结果为:

0 is less than 5
1 is less than 5
2 is less than 5
3 is less than 5
4 is less than 5
5 is not less than 5

注意break跳出循环时else是不会执行的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值