第七次课(20180416)

本节课讲了函数相关知识。

 

 一、申明一个函数,第一个参数是整型, 第二个参数是list类型,

# l 有一个默认值,默认值为[]空列表

 

def f(x,l=[]):

    for i in range(x):

        l.append(i*i)

    print(l)

 

# f(2) = f(2, l=[])

 

 

 

f(2)

# 输出什么[0, 1]

 

f(3,[3,2,1])

# 结果: [3, 2, 1, 0, 1, 4]

 

f(x=3, l=[])

# 结果: [0, 1, 4]

 

'''
函数的额关键字
def  定义函数
return  返回这
pass  滤过
exit(1)  直接退出


函数的参数
*args       tuple参数,对应赋值
**kwargs    dict参数,对应赋值
fun(*args, **kwargs)
fun(1, 2, 3, 4, 5, a=10, b=40)


args = (1, 2, 3, 4, 5)
kwargs = dict(a=10, b=40)



匿名函数
def add(x, y):
    return x+y

add = lambda x,y:x+y
'''



def add1(x, y):
    print(x+y)

def add2(x, y):
    return x+y

def hello():
    exit(1)
    print("hello")


def test(m, *args, **kwargs):
    print("m = {0}".format(m))
    print("args = {0}".format(args))
    print("kwargs = {0}".format(kwargs))

test(10,1,11,12)
# test(m=10, 1, 2, 3, a=1, b=2)


add1(1, 2)
result = add2(1, 2)
print(result)
hello()

 

二.高阶函数

都是可以通过代码逻辑实现的。
都是可以通过代码逻辑实现的
但是你写的函数的负责程序,或者算法不一定有人家内置的好
'''
from functools import reduce


def f(x):
    return x*x

print(map(f, [1, 2, 3, 4]))
print(list((map(f, [1, 2, 3, 4]))))
for i in map(f, [1, 2, 3, 4]):
    print(i)



def testMap(fun, iter):
    l = list()
    for i in iter:
        l.append(fun(i))
    return l


print(testMap(f, [1, 2, 3, 4]))



def add(x, y):
    return x+y

reduce(add, [1, 2, 3, 4, 5])
# 1, 2   = 3
# 3, 3   = 6
# 6, 4   = 10
# 10, 5   = 15



# 唯一用的比较多的,就是sorted
# sorted(iterable, key, reverse)
# iterable  一个可迭代的对象
# key 对什么进行排序
# reverse  bool类型,如果为true为反序, 默认为false
# 返回值是一个list
print(sorted([1, 4, 342, 3, 45, 76, 435, 34], reverse=True))


m = dict(a=1, c=10, b=20, d=15)
print(m)
print(sorted(m.items()))
print(sorted(m.items(), key=lambda x: x[0]))
print(dict(sorted(m.items(), key=lambda x: x[1])))
# print(sorted(m.items(), key = lambda d:d[1], reverse = True))

# for i in m:
#     print(i)
#
# for i in m.items():
#     print(i)



# 字典有三种初始化的方法
d1 = dict(a=1, b=2)
d2 = {"a": 1, "b": 2}
d3 = dict([("a", 1), ("b", 2)])
print(d1, d2, d3)

 

 

三:列表生成式
[exp for val in collection if condition]
生成器
方法一:
(exp for val in collection if condition)
方法二:

'''


def jgg():
    number = list()
    for i in range(1, 10):
        number.append(i)
    for A in [x for x in range(1, 10)]:
        for B in [x for x in range(1, 10) if x != A]:
            for C in [x for x in range(1, 10) if x != A and x != B]:
                for D in [x for x in range(1, 10) if x != A and x != B and x!= C]:
                    print("A = {0} B = {1}  C = {2} D = {3}".format(A, B, C, D))


# jgg()

a1 = (x for x in range(1, 10) if x%2==0)
print(a1)
# python2   a1.next()
print(next(a1))#python3 是直接调用next方法
print("##"*10)
for i in a1:
    print(i)

a2 = [x for x in range(1, 10) if x%2==0]
print(a2)


def test():
    a = 1
    for i in range(1, 10):
        yield i
        # return i
        a += 1
        # return i
#return和yield的区别
# yield 可以理解成return,但是比return多一些角色
# yiele 每次都返回,但是下一次取值时,从上一次yield的下一行开始
m = test()
print(m)

 

转载于:https://my.oschina.net/u/3804867/blog/1796007

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值