zoukankan      html  css  js  c++  java
  • 函数4

    一. 三元表达式

      求2个数的最大值

      • 普通方法

    x=2
    y=3
     
    if x > y:
        print(x)
    else:
        print(y)
      • 三元表达式

    x = 2
    y = 3
    max = x if x > y else y

    二. 可迭代对象与迭代器对象

    1. 可迭代对象

      • 定义:内置有iter方法的都叫可迭代对象

      • 属于可迭代对象的数据类型:str, list, tuple, dict, set, file

    name = 'byx'.__iter__
    lis = [1, 2].__iter__
    tup = (1, 2).__iter__
    dic = {'name': 'nick'}.__iter__
    s1 = {'a', 'b'}.__iter__
            
    f = open('49w.txt', 'w', encoding='utf-8')
    f.__iter__
    f.close()
    1. 迭代器对象

      • 定义:可迭代的对象执行iter方法得到的返回值。

      • 特点:

        1. 内置next方法,执行该方法会拿到迭代器对象中的一个值。

        2. 内置iter方法,执行该方法拿到迭代器本身。

        3. 文件本身就是迭代器对象。

      • 缺点:

        1. 取值麻烦,只能一个个取,并且只能往后取,值取了就没了。

        2. 无法使用 len() 方法获取长度。

    dic = {'a': 1, 'b': 2, 'c': 3}
    iter_dic = dic.__iter__()
    print(iter_dic.__next__())
    print(iter_dic.__next__())
    print(iter_dic.__next__())
    
    结果:
    a
    b
    C

     

    1. for 循环原理

      • for循环又称为迭代器循环,in后必须是可迭代的对象

      • 因为迭代器使用iter后还是迭代器本身,因此for循环不用考虑in后的对象是可迭代对象还是迭代器对象。

    lis = [1, 2, 3]
    for i in lis:
        print(i)
        
    结果:
    1
    2
    3

    三. 生成器

    1. 生成器函数

      • 定义:常规函数定义, 但使用yield语句而不是return语句返回结果。yield语句一次返回一个结果,再每个结果中间,挂起函数的状态,以便下次从它离开的地方继续执行。

      • 优点:不会一下在内存中生成太多数据

            def produce():
                """生产衣服"""
                for i in range(2000000):
                    yield "生产了第%s件衣服"%i
            
            product_g = produce()
            print(product_g.__next__()) #要一件衣服
            print(product_g.__next__()) #再要一件衣服
            print(product_g.__next__()) #再要一件衣服
            num = 0
            for i in product_g:         #要一批衣服,比如5件
                print(i)
                num +=1
                if num == 5:
            break
    1. 生成器表达式

    gen = (i for i in range(10)) 
    print(gen) 
    
    结果: 
    <generator object <genexpr> at 0x106768f10> 

    四. 列表推导式和字典推导式

    1. 列表推导式 

    print([i for i in range(10)])
        
    结果
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    1. 字典生成式

      • 一般生成

    print({i: i**2 for i in range(5)})
            
    结果:
    {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
      • zip方法生成

    keys = ['name', 'age', 'gender']
    values = ['byx', 19, 'male']
            
    res = zip(keys, values)
    print({zip(keys,values)})
            
    info_dict = {k: v for k, v in res}
    print({info_dict})
            
    结果:
    <zip object at 0x11074c088>
    {'name': 'byx', 'age': 19, 'sex': 'male'}
  • 相关阅读:
    TreeView的自定义绘制图标处理
    业务逻辑层的封装设计
    记一次CS系统与BS的对接集成
    cmd命令使用备忘
    如何有效管理员工
    代码可维护性重要吗?
    Oracle GoldenGate Director安装备忘
    浅析C#深拷贝与浅拷贝
    一首同音叠字诗“石室诗士施氏”
    Ajax原生使用
  • 原文地址:https://www.cnblogs.com/binyuanxiang/p/11579416.html
Copyright © 2011-2022 走看看