切片:对列表、元组、字符串、字典取中间的一部分,在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(可迭代对象)将可迭代但不是迭代器 的转变为迭代器。

最新文章

  1. mysql在空闲8小时之后会断开连接(默认情况)
  2. 【原创】开源Math.NET基础数学类库使用(03)C#解析Matlab的mat格式
  3. EntityFramework 7 Linq Contains In 奇怪问题(已修复)
  4. SQL Server 表变量和临时表的区别
  5. 制作Html标签以及表单、表格内容
  6. java实现将汉字转为拼音
  7. [CareerCup] 11.2 Sort Anagrams Array 异位词数组排序
  8. java socket 发送文件
  9. 集合框架,ArrayList和Vector的区别,让arrayList线程安全的几种方案
  10. git 删除分支和删除文件夹
  11. org.apache.subversion.javahl.ClientException: svn: E155021: This client is too old to work with the
  12. 【linux】常用命令集锦&持续更新...
  13. 【设计经验】3、ISE中烧录QSPI Flash以及配置mcs文件的加载速度与传输位宽
  14. 在MVC过滤器中获取触发的Controller、Action、参数 等
  15. Java基础-StringBuffer类与StringBuilder类简介
  16. GreenOpenPaint的实现(四)放大缩小处理滚动事件
  17. 面试和工作中的map
  18. 升级struts到2.5.2遇到的问题及解决方案
  19. Python全栈day14(集合)
  20. CMakeFile命令之file

热门文章

  1. 查询oracle数据库中的for update 中锁住的table表sql语句
  2. Android加载/处理超大图片神器!SubsamplingScaleImageView(subsampling-scale-image-view)【系列1】
  3. typeof详解
  4. Service的两种启动方式
  5. bzoj2957楼房重建——线段树
  6. kafka数据可靠性深度解读【转】
  7. 宿主机 && docker 常用命令
  8. 回味经典——uboot1.1.6 之 第一阶段
  9. Sense2vec with spaCy and Gensim
  10. JS获取元素的offsetTop,offsetLeft等相关属性