首页 > 其他 > 详细

yield用法

时间:2019-10-31 14:58:21      阅读:86      评论:0      收藏:0      [点我收藏+]

原本使用循环:

技术分享图片
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))
综合实践

 

yield用法

原文:https://www.cnblogs.com/Neroi/p/11771149.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!