• Python3入门(五)——高级特性


    一、切片

      对于取指定索引的值,python提供了切片来简化傻傻的循环

    list2 = ["apple", "water", "banana", "mango"]
    # 取索引0到3,左闭右开
    list2[0:3]
    ['apple', 'water', 'banana']
    #起始为0时可以省略
    list2[:3]
    ['apple', 'water', 'banana']

      其他诸如负数之类也是一如既往的支持的

      更多切片操作,参考:https://www.liaoxuefeng.com/wiki/1016959663602400/1017269965565856

    二、迭代

      普通遍历可以使用循环

    >>> d = {'a': 1, 'b': 2, 'c': 3}
    >>> for key in d:
    ...     print(key)

      遍历dict也是一样的:for k, v in d.items()

      带下标的可以使用enumerate

    list1 = ["f", "m"]
    for i, e in enumerate(list1):
        print(i, e)

    三、列表生成式

      直接看一个生成偶数平方的例子:

    [x*x for x in range(1, 10) if x % 2 == 0]
    [4, 16, 36, 64]

      列表生成甚至可以嵌套,多层for

    四、生成器

      这种一边循环一边计算的机制,称为生成器:generator。

      创建生成器可以通过把生成式的[]改成():

    g = (x*x for x in range(1, 10) if x % 2 == 0)
    g
    <generator object <genexpr> at 0x000001EED0D203B8>

      这里的g保存的就是算法了,那即使这个算法生成的序列非常大也没关系,这里只存算法,后面使用的时候才会算出结果:

    g = (x * x for x in range(10))
    >>> for n in g:
    ...     print(n)
    # 慎用不可控的next(g)来取元素

      第二种产生生成器的方法是在函数定义中使用yeild关键字,详细查看廖雪峰老师的博客

    五、迭代器

      可以直接作用于for循环的对象统称为可迭代对象:Iterable

      可以使用isinstance()判断一个对象是否是Iterable对象(需导包)

      可以通过next()来不断取出下一个值,直到异常抛出(所以一般使用for控制)

  • 相关阅读:
    SpringCloud 【目录】
    MongoDB 【目录】
    03月01日总结
    02月27日总结
    01月17日总结
    Spring注解之@PropertySource注解加载配置文件的属性
    Spring IoC容器添加组件的方式
    Spring注解之@Value注解读取配置文件属性
    java什么时候声明static方法
    面试题|Spring中BeanFactory与ApplicationContext的本质区别和作用
  • 原文地址:https://www.cnblogs.com/jiangbei/p/8920694.html
Copyright © 2020-2023  润新知