Python期末复习:控制流与函数

条件语句 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

 

 


 

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值