廖雪峰Python学习笔记day4

学习笔记day3

# python study day4

# 高阶函数 filter(),过滤序列、筛选函数
# filter(过滤函数, Iterable) , 返回Iterator 惰性序列
# l = list(filter(lambda n: n%2==1, [1, 2, 3, 4, 5]))
# print(l) #>>> [1, 3, 5]
# list(filter(lambda s: s.strip(), ['aa', '', '1'])) #>>>['aa', '1'] 
# 求素数,埃氏筛法
# 首先,列出从2开始的所有自然数,构造一个序列:
# 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...
# 取序列的第一个数2,它一定是素数,然后用2把序列的2的倍数筛掉:
# 3, 5, 7, 9, 11, 13, 15, 17, 19, ...
# 取新序列的第一个数3,它一定是素数,然后用3把序列的3的倍数筛掉:
# 5, 7, 11, 13, 17, 19, ...
# 不断筛下去,就可以得到所有的素数。
# def _odd_iter(): # 初始化一个奇数生成器
#     n = 1
#     while True:
#         n += 2
#         yield n
# def _not_divisible(n): # 筛选函数
#     return lambda x: x%n > 0
# def primes(): # 素数生成器
#     yield 2
#     it = _odd_iter() # 初始化序列
#     while True:
#         n = next(it) # 返回序列第一个数
#         yield n
#         it = filter(_not_divisible(n), it) # 构造新序列
# for n in primes():
#     if n < 1000:
#         print(n)
#     else:
#         break
# 筛选回数(左右读一致)
# def is_palindrome(n):
#     n = str(n)
#     return n == n[::-1] # 切片反转字符
# output = filter(is_palindrome, range(1, 1000))
# print('1~1000:', list(output))

# sorted() 排序函数
# newlist = sorted([99, -3, 23, -23, 1])
# print(newlist) # 直接对list进行排序 >>> [-23, -3, 1, 23, 99]
# newlist2 = sorted([99, -3, 23, -23, 1], key=abs)
# print(newlist2) # 传入key规则,自定义排序 >>> [1, -3, 23, -23, 99]
# sorted(['bob', 'ace', 'Zerla'], key=str.lower) #按字母顺序排序(默认ASCII)
# ll = ['bob', 'ace', 'Zerla']
# sorted(ll, key=str.lower, reverse=True) # reverse参数反向排序
# # >>> ['Zerla', 'bob', 'ace']

# 返回函数,将函数作为结果返回(一次调用返回函数,二次执行结果)
# def lazy_sum(*args):
#     def sum():
#         ax = 0
#         for n in args:
#             ax = ax + n
#         return ax
#     return sum
# f = lazy_sum(1, 3, 5, 7)
# print(f) #>>> <function lazy_sum.<locals>.sum at 0x000001F75348FAF0>
# print(f()) #>>> 16
# 闭包,外部函数参数和局部变量会保存到返回函数中
# def count():
#     for i in range(1, 4):
#         def f():
#             return i*i
#     return f
# f1 = count()
# f2 = count()
# f3 = count()
# print(f1()) #>>> 9
# print(f2()) #>>> 9
# print(f3()) #>>> 9 外部变化参数、循环变量直接影响到所有返回函数
# def count():
#     def f(j):
#        def g():
#            return j*j
#        return g # 直接存在结果,去除变量影响
#     fs = []
#     for i in range(1, 4):
#         fs.append(f(i))
#     return fs
# f1, f2, f3 = count() # count()是一个 function list
# print(f1()) #>>> 1
# print(f2()) #>>> 4
# # 计数器
# def createCounter():
#     count = []
#     def counter():
#         count.append(1)
#         return len(count)
#     return counter
# c1 = createCounter()
# print(c1(), c1())
# def createCounter2():
#     count = [0]
#     def counter():
#         count[0] +=1
#         return c[0]
#     return counter
# c2 = createCounter()
# print(c2(), c2())

在这里插入图片描述
学习笔记day5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值