首页 > 其他 > 详细

函数4

时间:2019-09-24 17:26:03      阅读:76      评论:0      收藏:0      [点我收藏+]

一. 三元表达式

  求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}

 

函数4

原文:https://www.cnblogs.com/binyuanxiang/p/11579416.html

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