zoukankan      html  css  js  c++  java
  • python学习之高级特性:

    切片:对列表、元组、字符串、字典取中间的一部分,在C中一般是通过for循环拷贝/memcpy/strcat等操作。而python提供了更方便的切片操作符[m:n]:前闭后开,如果从0取m可以省略;如果只用[:]就是切整片;也可以从尾端切片[-m:]:前后的闭区间。

    列表生成式:List(range(m,n)):构造一个大于等于m小于n的列表;对于想生成复杂的列表要用列表生成式:[生成对象的模型, for 变量 in 可迭代的对象   附加条件表达式]

                (1*1,2*2.。。且能被2整除的列表)方法有:最简单的方法:[x * x for x in range(1, 11) if x % 2 == 0 ] 或者

          >>> L = []

          >>> for x in range(1, 11):
                  if(if x % 2 == 0 ):
                 L.append(x )

        其它复杂的生成式举例:

             使用两个变量来生成 list
        >>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
        >>> [k + '=' + v for k, v in d.items()]
        ['y=B', 'x=A', 'z=C']
      把一个 list 中所有的字符串变成小写:
        >>> L = ['Hello', 'World', 'IBM', 'Apple']
        >>> [s.lower() for s in L]
        ['hello', 'world', 'ibm', 'apple']

    迭代:对列表、元组、字符串、字典、生成器的遍历称为迭代,对任何可迭代的对象都可以用for循环:关于字典的迭代需要注意的是:默认是对键的迭代,如果要对值切片要用.value()的方法;要对键 和值同时迭代需要用到.item()的方     法:for k, v in d.items():         print(k,':',v) #‘:’是添加的连接符。

           problem1: 如何判断一个对象是可迭代对象呢?方法是通过 collections 模块的 Iterable 类型判断:
            >>> from collections import Iterable
            >>> isinstance('abc', Iterable) # str 是否可迭代

      problem2:如何对List的下标和元素同时迭代:答案是利用Python 内置的 enumerate 函数可以把一个 list 变成索引-元素对,这样就可以在 for 循环中同时迭代索引和元素本身:
            >>> for i, value in enumerate(['A', 'B', 'C']):
                ... print(i, value)
                ...
                0 A
                1 B
                2 C
    生成器:产生背景:List可以产生大量的列表元素,但比较占存储空间,为了能推算后续结果又不想生成列表那么就可以用生成器了genarator

              创建方法:方法一:将列表生成式的【】改成?();方法2 :用函数的方法+yied关键字

              特点:1 当输入生成器不输出结果数据而只是说明生成器 2可以用next(生成器)递推出下一个结果直到StopIteration 错误或者for循环输出所有避免StopIteration 错误);3函数式生成器每遇到yield就产生中断(关键字yield也称为一般函数和函数式生成    器的最基本区别,还有2点:调用后生成器不输出结果值,可以用next()函数)

    迭代器:可表示无限大的数据流。能用for循环的对象都是可Iterable 迭代的(isinstance(对象, Iterable) 来判断),但不一定是迭代器Iterator (是否可next(迭代器对象),或用isinstance(对象, Iterator) 来判断是否是迭代器)判断是否是迭代器,通过iter(可迭代对象)将可迭代但不是迭代器 的转变为迭代器。

  • 相关阅读:
    vs快速添加引用解析的快捷键
    Linux内核调试技术——kprobe使用与实现
    Linux内核调试技术——kretprobe使用与实现
    Linux内核调试技术——jprobe使用与实现
    【HTTP协议】---HTTP协议详解
    雪崩效应
    Shell中IFS用法
    shell中for循环,读取一整行
    BCD码
    pam模块日志怎么输出
  • 原文地址:https://www.cnblogs.com/jieruishu/p/6897306.html
Copyright © 2011-2022 走看看