zoukankan      html  css  js  c++  java
  • 8.02_python_lx_day13<1>

    一.匿名函数:用一句话来表达只有返回值的函数

    (1)语法:lambda 参数 : 返回值  (追求代码:简洁,高效)

    (2)表达式

    <1>无参的lambda 表达式

    1 def func():
    2     return "123" 
    改写 3 func = lambda : "123" 4 res = func() 5 print(res)

    <2>有参的lambda 表达式

    1 def func(n):
    2     return type(n)
    改写
    3 func = lambda n : type(n) 4 print( func([1,2,3]) )

    <3>带有判断条件的lambda 表达式

    def func(n):
        if n % 2 == 0:
            return "偶数"
        else:
            return "奇数"        
    
    func = lambda n : "偶数" if n % 2 == 0 else "奇数"
    res = func(17)
    print(res)

     二.三元(目)运算符

    语法:
      真值 if 条件表达式 else 假值 如果条件表达式为真,返回真值,否则返回假值

    1 def func():
    2     if x>y:
    3         return x
    4     else:
    5         return y
    6 func = lambda x,y : x if x>y else y
    7 res = func(200,100)
    8 print(res)

    三.迭代器 : 能被next调用,并不断返回下一个值的对象,叫做迭代器(对象)

    概念:
      迭代器指的是迭代取值的工具,迭代是一个重复的过程,每次重复都是基于上一次的结果而继续的,
      单纯的重复并不是迭代
    特征:
      并不依赖索引,而通过next指针迭代所有数据,一次只取一个值,大大节省空间

     1.可迭代对象

    1 setvar = {"a","b","c","d"}
    2 for i in setvar:
    3     print(i)

    dir 获取当前类型对象中的所有成员

    成员中是否有__iter__ 方法用来判断是否是可迭代性数据

    1 lst = dir(setvar)
    2 print(dir(lst))
    3 res = "__iter__" in dir(setvar)
    4 print(res)

    (2)迭代器

    for 循环能够遍历一切可迭代性数据的原因在于,底层调用了迭代器,通过next方法中的指针实现数据的获取
    可迭代对象 -> 迭代器 不能够被next直接调用 -> 可以被next直接调用的过程

    <1>如何来定义一个迭代器

    1 setvar = {"a","b","c","d"}
    2 it = iter(setvar)
    3 print(it)

    <2>如何来判断一个迭代器

    1 print(dir(it))
    2 res = "__iter__" in dir(it) and "__next__" in dir(it)
    3 print(res)

    <3>如何来调用一个迭代器

    next在调用迭代器中的数据时,是单向不可逆,一条路走到黑的过程

    1 res = next(it)
    2 print(res)

    数据全部调用后 再次调用会StopIteration 报错 停止迭代

    <4>重置迭代器

    迭代器数据通过next全部调用后,重置迭代器后,可从头再次调用

    1 it = iter(setvar)
    2 res = next(it)
    3 print(res)

    <5>使用其他方式判断迭代器或者可迭代对象

    Iterator 迭代器 Iterable 可迭代对象

    1 from collections import Iterator,Iterable
    2 res = isinstance(it,Iterator)
    3 print(res)
    4 res = isinstance(it,Iterable)
    5 print(res)

    <6>使用其他方式调用迭代器中的数据

    ①for 循环

    1 lst = [1,2,3,4,5,6,7,7,8,9,10]
    2 it = iter(lst)
    3 for i in it:
    4     print(i)

    ②for + next

    1 lst = [1,2,3,4,5,6,7,7,8,9,10]
    2 it = iter(lst)
    3 for i in range(10):
    4     res = next(it)
    5     print(res)
    6 print(next(it))

     ③list强转

    1 res = list(it)
    2 print(res)
  • 相关阅读:
    互联网 DBA 需要做那些事(转)
    mysql_connect和mysql_pconnect区别(转)
    Redis应用案例,查找某个值的范围(转)
    PHP 正则表达式常用函数使用小结
    PHP转换UTF-8和GB2312的URL编码(转)
    PHP 打印调用函数入口地址(堆栈)
    php CI框架nginx 配置
    apache部署多个项目
    Apache+php在windows下的安装和配置
    appium测试之获取appPackage和appActivity
  • 原文地址:https://www.cnblogs.com/Magicianlx/p/13394785.html
Copyright © 2011-2022 走看看