欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

22-高级特性之内建方法(3)

发布时间:2025/4/14 编程问答 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 22-高级特性之内建方法(3) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

filter

  • 定义:传入一个函数f与Iterable对象I,返回一个Iterator。根据f(I(i))的返回值是True或False来决定是否保留I(i)。起到过滤器的功能

    def is_odd(x):
    return (x%2 == 1)
    L1 = list(filter(is_odd, range(11))) #filter和map类似,返回值都是一个Iterator,是惰性序列{无穷stream},要用list之类的结构解析出来
    print(L1,'\n')

    def ridofempty(s):
    return s and s.strip()
    L2 = ['', 'abc', 'cde', ' ', ' abc', 'cde ']
    L3 = list(filter(ridofempty, L2))
    print(L2,'\n', L3, '\n')

  • 筛选法选择素数:

    #1.构造产生奇数的gererator:从3开始
    def create_odd():
    n = 1
    while True:
    n += 2
    yield n
    #2.构造筛选函数
    def is_divisible(n):
    return (lambda x: (x%n > 0)) #过滤掉n的倍数,即x%n==0的数,此时默认x>n; x待会儿用Iterator传入即可
    #3.构造筛选素数的函数
    def GetPrime():
    yield 2 #2作为特殊数据直接输出
    it = create_odd() #产生奇数流,3开始
    while True:
    n = next(it) #下一个产生的素数n
    yield n
    it = filter(is_divisible(n), it) #把刚产生的n,的倍数都过滤掉,再次生成"新的it"
    #4.调用100以内的is_prime,产生素数
    primes = GetPrime() #当然primes作为Iterator,当然是Iterable,可以用for迭代
    L4 = []
    while True:
    n = next(primes) #Iterator的特点,可以用next逐个取出
    L4.append(n)
    if (n >= 97):
    break
    print(L4,'\n')

  • 作业:筛选出回文数

    #print(list(range(10)))
    #1.构造从0开始的generator
    def create_num():
    n = 0
    while True:
    yield n
    n += 1
    #2.构造筛选函数
    #逆转一个整数 print(int((str(123)[-1::-1]))) #先把整数变成字符串,再用[]进行颠倒,最后转化成整数
    def is_palindrome(x):
    return (x == int(str(x)[-1::-1])) #x 与其“反数”是否相等,若等为回文
    #print(is_palindrome(123))
    #3.构造筛选回文数的函数
    def GetPalindrome():
    it = create_num() #创建自然数集合
    it = filter(is_palindrome, it) #对非回文数进行过滤
    while True:
    n = next(it) #逐个取出并返回
    yield n
    #4.调用GetPalindrome
    # ps = GetPalindrome()
    # L5 = []
    # while True:
    # n = next(ps)
    # L5.append(n)
    # if (n >= 1000):
    # break
    # print(L5)
    L5 = []
    for n in GetPalindrome():
    if (n >= 100000):
    break
    L5.append(n)
    print(L5, '\n')

转载于:https://www.cnblogs.com/LS1314/p/8504483.html

总结

以上是生活随笔为你收集整理的22-高级特性之内建方法(3)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。