前言
昨天我们学习了一些序列,今天将会补充一个序列,并学习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是不会执行的