条件语句 if
主要功能和C和C++中的语法类似,除了else if语句
在python3中式elif
测试语句的返回值
如果对象为空
对象的值为零
特殊对象的None
被视作False
在python的布尔运算中 and 或者 or 会返回True或者False的操作对象
print([] and {})
print([] or {})
print(2 or 0)
[]
{}
2
Python中的三元表达式
x = 3 if 2 else 1 #其中2是作为判断的关键字
循环语句for和while
while
在python中while语句有else,其中else只会执行一次或者一次都不执行因为有break语句,其他的都和其他语言的while一样
for
通用序列迭代器
break,continue,pass
第一个强制退出当前循环
第二个直接跳转到循环开头
第三个不执行任何操作
异常处理
try:
print(3/0)
except:
print("被除数不可以为零")
列表解析
x = [i + 5 for i in range(10) if i > 5]
print(x)
生成器表达式
语法和列表解析一样,但是在处理大量数据的时候就适合用生成器表达式,因为生成器效率高
x = (i for i in range(10))
ls = []
for i in x:
ls.append(i)
print(ls)
函数
函数形式就是
def 函数名(参数):
默认参数的规则
不允许先生命有默认值的参数
比如:
def func(a = 10,b)#这样的声明是错误的
def func(a , b = 10) #这样的声明式正确的
fun(*x)和fun(**x)
第一个式将x当作列表,这样就可以传递列表了
第二个是传递一个字典,用字典的值来表示(虽然是用字典,但是不能真的使用字典)
def func(**x):
for i in x:
print(i)
s = {"sd": 1, "sds": 2}
func(x=1, y=2)
func(**s)
func(s)
x
y
sd
sds
Traceback (most recent call last):
File "D:\temp\Python期末复习\string.py", line 9, in <module>
func(s)
TypeError: func() takes 0 positional arguments but 1 was given
进程已结束,退出代码1
函数的调用
# 上面提到的四种类型的参数的执行顺序和下面的位置顺序一样
def func(x, *a, y = 1, **b):
print(x, y, a, b)
func(1, 2, 1)
func(1, a=1, b=2)
func(1, 2, 3, 2, 4, x=1)
这里需要注意的是,前面提到的默认参数要在参数之前定义的生效范围就是这俩,和(*x),(**x)无关
比如:
# 上面提到的四种类型的参数的执行顺序和下面的位置顺序一样
def func(x = 1, *a , **b):
print(x, a, b)
func(1, 2, 1)
func(1, a=1, b=2)
func(1, 2, 3, 2, 4, x=1)
Traceback (most recent call last):
File "D:\temp\Python期末复习\string.py", line 8, in <module>
func(1, 2, 3, 2, 4, x=1)
TypeError: func() got multiple values for argument 'x'
1 (2, 1) {}
1 () {'a': 1, 'b': 2}
进程已结束,退出代码1
这里报错是因为x=1不知道是前面的还是**b里面的
Lambda表达式
s = lambda x:x*x
print(s(8))
lambda表达式的实际应用
s = [['li', 3], ['nu', 2], ['sd', 4]]
s.sort(key=lambda x: x[1], reverse=True)
print(s)
[['nu', 2], ['li', 3], ['sd', 4]]
内置函数
计算函数
sum(),len(),max(),min()
s = [1,2,3]
print(sum((s)))
print(min(s))
print(max(s))
print(len(s))
6
1
3
3
映射函数
map(),filter(),reduce()
map(function,oprator1,selected:oprator2):返回一个经过处理后的迭代器
x = [1, 2, 3, 4]
z = map(lambda x: x + x,x )#这个里面的函数可以指自带的,或者自定义的
for i in z:
print(i)
2
4
6
8
def func(x):
return x + 1
x = [1, 2, 3, 4]
z = map(func, x)
for i in z: #这里可以直接使用list强制类型转化
print(i)
2
4
6
8
x = [1, 2, 3, 4]
y = [5, 6, 7, 8]
def add(x, y):
return x + y
z = list(map(add, x, y))
print(z)
[6, 8, 10, 12]
filter():选择执行结果为True的成员,筛选去除False的成员
def nav(x):
return x % 2
x = [1, 2, 3, 4, 5, 67, 8]
z = list(filter(nav, x))
print(z)
[1, 3, 5, 67]
判断n,m之间的素数
n = 10
m = 20
z = list(filter(lambda x: not [x % i for i in range(2, x) if x % i == 0], range(n, m)))
print(z)
[11, 13, 17, 19]
reduce():累积计算
from functools import reduce
x = [1,2,3,4,5,6]
z = reduce(lambda x,y:x*y,x)
print(z)
其他
range(),enumerate(),zip()
zip()函数是将多个对象打包,变成元组形式
s = [1, 2, 3]
x = [1, 2]
for i in zip(s, x):
print(i)
(1, 1)
(2, 2)
s = [1, 2, 3]
x = [1, 2]
for i, j in zip(s, x):
print(i, j)
1 1
2 2
enumerate():
x = [1 ,2, 3]
for i,x in enumerate(x):
print(i,x)
0 1
1 2
2 3