对list 进行切片
  如列表
    L = ['Adam', 'Lisa', 'Bart', 'Paul']
    L[0:3]
    ['Adam', 'Lisa', 'Bart']
    L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。
    即索引0,1,2,正好是3个元素。
  

  如果第一个索引是0,还可以省略:
    L[:3]
    ['Adam', 'Lisa', 'Bart']
    切片操作还可以指定第三个参数:
      L[::2]
      ['Adam', 'Bart']
      第三个参数表示每N个取一个,上面的 L[::2] 会每两个元素取出一个来,
      也就是隔一个取一个。
      把list换成tuple,切片操作完全相同,只是切片的结果也变成了tuple
  

  倒序切片
    对于list,既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片,试试:
      L = ['Adam', 'Lisa', 'Bart', 'Paul']
      L[-2:]
        ['Bart', 'Paul']
      L[:-2]
        ['Adam', 'Lisa']
      L[-3:-1]
        ['Lisa', 'Bart']
      L[-4:-1:2]
        ['Adam', 'Bart']
  对字符串切片
    字符串可以进行切片操作,只是操作结果仍是字符串。
      'ABCDEFG'[:3]
        'ABC'
      'ABCDEFG'[-3:]
        'EFG'
      'ABCDEFG'[::2]
        'ACEG'
  什么是迭代
    如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration)
    因为 Python 的 for循环不仅可以用在list或tuple上,还可以作用在其他任何可迭代对象上。
 
  索引迭代
    Python中,迭代永远是取出元素本身,而非元素的索引。
    对于有序集合,元素确实是有索引的。有的时候,我们确实想在 for 循环中拿到索引
    方法是使用 enumerate() 函数:
    L = ['Adam', 'Lisa', 'Bart', 'Paul']
      for index, name in enumerate(L):
    print index,'_',name
      0 - Adam
      1 - Lisa
      2 - Bart
      3 - Paul
    

  迭代dict 的value
    dict 对象有一个values() 方法,这个方法把dict 转换成一个包含所有values 的list
    这样,我们迭代的就是 dict 的没一个value;
    d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
    print d.values()
    [85, 95, 59]
    还有一个 itervalues() 方法,用 itervalues() 方法替代 values() 方法,迭代效果完全一样
    那这两个方法有何不同之处呢?
      1. values() 方法实际上把一个 dict 转换成了包含 value 的list。
      2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,
      所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存
 
  迭代dict 的key 和value
    dict 对象的 items() 方法返回的值:
    d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
      print d.items()
    [('Lisa', 85), ('Adam', 95), ('Bart', 59)]
    tems() 方法把dict对象转换成了包含tuple的list,我们对这个list进行迭代,可以同时获得key和value:
      for key, value in d.items():
        print key, ':', value
          Lisa : 85
          Adam : 95
           Bart : 59

   生成列表
      要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11):
        range(1, 11)
        [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是循环:
        L = []
        for x in range(1, 11):
        L.append(x * x)
        [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
        [x * x for x in range(1, 11)]
        [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    条件过滤
      如果我们只想要偶数的平方,不改动 range()的情况下,可以加上 if 来筛选:
        [x * x for x in range(1, 11) if x % 2 == 0]
        [4, 16, 36, 64, 100]
      有了 if 条件,只有 if 判断为 True 的时候,才把循环的当前元素添加到列表中。
    多层表达式
      对于字符串 'ABC' 和 '123',可以使用两层循环,生成全排列:
        [m + n for m in 'ABC' for n in '123']
          ['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
      翻译成循环代码就像下面这样:
        L = [] for m in 'ABC': for n in '123': L.append(m + n)
 

python 基础 切片 迭代 列表生成式的更多相关文章

  1. Python学习 Day 4 函数 切片 迭代 列表生成式 生成器

    定义函数 def my_abs(x):#求绝对值的my_abs函数 if x >= 0: return x else: return –x def nop():#空函数 pass#占位符 参数检 ...

  2. Python 函数 切片 迭代 列表生成器

    函数 编写     定义一个函数要用def语句    def sum(i,n):   ⚠有冒号 返回多值     实际上是返回一个tuple 定义默认参数    默认参数的作用是简化调用   def ...

  3. python高级特性:切片/迭代/列表生成式/生成器

    廖雪峰老师的教程上学来的,地址:python高级特性 下面以几个具体示例演示用法: 一.切片 1.1 利用切片实现trim def trim(s): while s[:1] == " &qu ...

  4. 『Python基础-8』列表

    『Python基础-8』列表 1. 列表的基本概念 列表让你能够在一个地方存储成组的信息,其中可以只包含几个 元素,也可以包含数百万个元素. 列表由一系列按特定顺序排列的元素组成.你可以创建包含字母表 ...

  5. python基础——切片

    python基础——切片 取一个list或tuple的部分元素是非常常见的操作.比如,一个list如下: >>> L = ['Michael', 'Sarah', 'Tracy', ...

  6. 初学Python(十)——列表生成式

    初学Python(十)--列表生成式 初学Python,主要整理一些学习到的知识点,这次是列表生成式. # -*- coding:utf-8 -*- ''''' 列表生成式 ''' #一行代码表达所有 ...

  7. python基础--切片、迭代、列表生成式

    原文地址:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143175684 ...

  8. Python笔记(九)_切片、列表生成式

    切片 mylist[:3] 取前3位元素,0可省略不写 mylist[-4:] 取后4位元素,0可省略不写 mylist[2:4] 从第2个开始取,取到第4个,但第4个不取,取的元素值为4-2=2 m ...

  9. Python基础学习Day4 列表的使用方法、range 用法、in用法

    一.列表 1.1列表:python基础数据类型之一:其他语言也有列表的概念,js 数组,可索引 ,可切片,可加步长 1.2列表的索引,切片,切片+ 步长 结果: 注意:列表里元素的数据类型,就是它本身 ...

随机推荐

  1. easyui树形菜单实现

    需求:读取路径配置中的相对路径获取对应的子文件夹及其子文件并形成树形结构,加载xml文件,输入搜索关键字匹配xml里面的value节点的值对应的contact值的集合并进行搜索 例如:输入b,找到xm ...

  2. Python语言程序设计学习 之 了解Python

    Python简介 Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. Python是纯粹的自由软件,源代 ...

  3. Web前端和后端开发的区别和要求

    Web前端和后端开发的区别和要求 有时候自己会分不清,其实是因为前后端都了解,类似于全栈工程师,但又什么都不是很精通.那到底什么是前端.后端呢,我整理了一些企业要求级别的前端/后端基础,开发框架等. ...

  4. 路飞学城知识点4之Django contenttypes 应用

    Django contenttypes 应用 contenttypes 是Django内置的一个应用,可以追踪项目中所有app和model的对应关系,并记录在ContentType表中. 每当我们创建 ...

  5. d3js shape深入理解

    本文将视图了解d3js提供的帮助我们创建矢量图形的helper函数,比如下面的: http://d3indepth.com/shapes/ lines curves pie chart segment ...

  6. Ubuntu下Visual Studio Code的配置

    最近在Ubuntu系统里用Visual Studio Code编写vue代码时,在build的时候老是报错,后来发现原来Visual Studio Code里默认Tab是4个空格,而vue代码要求ta ...

  7. 第二课,DOS常用命令及进制转换

    课后的一点小总结还望各位大神点评. 注意事项:1.不要在c盘进行操作. 2.要注意路径. 3.要熟练掌握DOS命令 操作指令(.在本文代表空格,本次以文档为例) 打开DOS:窗口键+r  输入cmd ...

  8. 美团2018年CodeM大赛-初赛B轮 B 配送(最短路)

    美团2018年CodeM大赛-初赛B轮 B 配送 题意 题解 对于每个任务,只要从上个任务的终点出发即可. 时间.地点很少,可以算出每个地点-时间的最小花费. 以题目描述的起点终点起始结束时间建图,很 ...

  9. boost编译

    从boost官网( http://www.boost.org )上下载最新的boost版本,现在最新是1.64版本,解压到自定义目录(我解压到了E盘E:\boost_1_64_0\,最终的目录结构是E ...

  10. Asp.net & Aspose.cells 导入

    Workbook workBook = new Workbook(this.fuFile.FileContent); Aspose.Cells.Worksheet sheet = workBook.W ...