python-函数 Python 函数介绍 Python3 函数进阶&迭代器与生成器 python的各种推导式(列表推导式、字典推导式、集合推导式)

1、函数介绍

 Python 函数介绍

2、变量的作用域

3、递归函数

作业

# 作业:
#1、使用for循环打印99 乘法表
#2、使用递归求菲薄纳奇数列,1,1,2,3,5,8.。。
for i in range(1,10):
    for j in range(1,i+1):
        print(f"{j}*{i}={i*j}",end=' ')
    print()

print()
# 递归函数
def func(n):
    if n == 1 or n == 2:
        return 1
    else:
        return func(n-1) + func(n-2)

n=10
li=[]
for i in range(1,n+1):
    res = func(i)
    li.append(res)
print('递归函数',li)

# 直接递归实现
n=10
lis=[]
for i in range(n):
    if i ==0 or i==1:
        lis.append(1)
    else:
        lis.append(lis[i-1]+li[i-2])
print('直接递归',lis)

递归函数求10!

def fun(n):
    if n==1:
        return 1

    return n*fun(n-1)

print(fun(10))

匿名函数

Python3 函数进阶&迭代器与生成器

列表生成器

li = [i*2 for i in range(10)]
print(li)

例题:求100以内3的倍数

列表生成式

li= []
for i  in range(1,101):
    if i%3==0:
        li.append(i)
print(li)

print([i for i in range(1,101) if i%3==0])

更简洁方法:
print([i for i in range(3,100,3)])

python的各种推导式(列表推导式、字典推导式、集合推导式)

4、高阶函数

reduce() 累计求和 例如 1+2+3....+100

reduce(lambda x,y:x+y,[1,2,3,4])

from functools import reduce
print(reduce(lambda x,y:x+y,[1,2,3,4,5]))

# 实现1!+2!+3!+4!
print(reduce(lambda x,y:x*y,[1,2,3,4,5]))
# 实现1!+2!+3!+4!
print(reduce(lambda x,y:x*y,[1,2,3,4,5]))

# 1-5每个数的阶层形成一个列表
def fat(n):
    return reduce(lambda x,y:x*y,range(1,n+1))
print(list(map(fat,range(1,6))))

# 对1!..+5!求和
sum=reduce(lambda x,y:x+y,list(map(fat,range(1,6))))
print(sum)

filter()筛选函数

map()会根据提供的函数对指定序列做映射

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组 用list()转化为列表

sorted() 函数

sorted(iterable, key=None, reverse=False)  
iterable
-- 可迭代对象。
key
-- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse
-- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

返回值

返回重新排序的列表。

# sorted
# 字典
print(sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}))
# 利用key进行倒序排序
# 默认对键进行排序,返回排序列表
# 对字典的值进行排序:
sorted(dict,lambda x:dict[x]) example_list = [5, 0, 6, 1, 2, 7, 3, 4] result_list = sorted(example_list, key=lambda x: x) print(result_list) example_list = [5, 0, 6, 1, 2, 7, 3, 4] print(sorted(example_list, reverse=True)) [1, 2, 3, 4, 5] [0, 1, 2, 3, 4, 5, 6, 7] [7, 6, 5, 4, 3, 2, 1, 0]
# 对列表元素按长度进行排序
li3=['a','as','zxc','sd']
print(sorted(li3,key=lambda x:len(x)))
# ['a', 'as', 'sd', 'zxc']

迭代器和生成器

生成器都是Iterator对象,但list、dict、str虽然是Iterable(可迭代),却不是Iterator(迭代器)。

把list、dict、str等Iterable变成Iterator可以使用iter()函数:

可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。

凡是可作用于for循环的对象都是Iterable类型;
# 通过iter()创建迭代器
li = [1,2,3,4]
it = iter(li)
print(it)
print(next(it))
for i in iter(it):
    print(i,type(i))

<list_iterator object at 0x0000000001D966A0>
1
2 <class 'int'>
3 <class 'int'>
4 <class 'int'>

生成器

 

猜你喜欢

转载自www.cnblogs.com/foremostxl/p/11762002.html