zoukankan      html  css  js  c++  java
  • yield用法

    原本使用循环:

    def gen_num():
        nums = []
        for i in range(10):
            print(f'生成数据:{i}')
            nums.append(i)
        return nums
    nums = gen_num()
    for num in nums:
        print(f'打印数据:{num}')
    for循环

    使用生成器可以更高效的传输

    def gen_num():
        for i in range(10):
            print(f'生成数据:{i}')
            yield i
    nums = gen_num()
    for num in nums:
        print(f'打印数据:{num}')
    高效生成器
    CHINESE_NUM_DICT = {
        '': '1',
        '': '2',
        '': '3',
        '': '4',
        '': '5',
        '': '6',
        '': '7',
        '': '8',
        '': '9'
    }
    
    
    def get_data():
        datas = (41234213424, '一九八八七二六三', 8394520342, '七二三六二九六六', '敏感信息', 80913408120934, '敏感信息', '敏感信息', 95352345345,
                 '三三七四六', 999993232, 234234234, '三六八八七七', '敏感信息')
        for data in datas:
            yield data
    
    
    def remove_sensitive_data(datas):
        for data in datas:
            if data == "敏感信息":
                continue
            yield data
    
    
    def tranfer_chinese_num(datas):
        for data in datas:
            try:
                num = int(data)
            except ValueError:
                num = int(''.join(CHINESE_NUM_DICT[x] for x in data))
            yield num
    
    
    def save_data(number_list):
        data_list = []
        for num in number_list:
            data_list.append(num)
        return data_list
    
    
    raw_data = get_data()
    safe_data = remove_sensitive_data(raw_data)
    number_list = tranfer_chinese_num(safe_data)
    print(save_data(number_list))
    综合实践
  • 相关阅读:
    docker学习
    LIS是什么?
    Android网络课程笔记-----定制通知系统
    java常用算法
    java正则表达式大全
    无需ROOT就能拿ANR日志
    Android网络课程笔记-----定制系统控件2
    Android网络课程笔记-----定制系统控件1
    Android网络课程笔记-----Fragment
    读《启示录》有感-----1
  • 原文地址:https://www.cnblogs.com/Neroi/p/11771149.html
Copyright © 2011-2022 走看看