学习
实践
活动
专区
工具
TVP
写文章
专栏首页柠檬先生python 基础 切片 迭代 列表生成式

python 基础 切片 迭代 列表生成式

对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)

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://www.cnblogs.com/nmxs复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

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

    菩提树下的杨过
  • Python学习 Day 4 函数 切片 迭代 列表生成式 生成器

    TypeError: my_abs() takes exactly 1argument (2 given)#参数个数不对

    统计学家
  • python迭代器、生成器、列表推倒式

    在某种情况下,我们需要节省内存,就只能自己写,我们自己写的能实现迭代器的东西 称之为:“生成器”

    Mirror王宇阳
  • 列表生成式,迭代器和生成器

    现在有个需求,看列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],现在要求把列表里的每个值加1,你怎么实现?你可能会想到的几种方法:

    py3study
  • 第3章 Python 基础 ( 列表生成式 )

    现在有个需求,现有列表a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求你把列表里的每个值加1,你怎么实现?你可能会想到2种方式

    axiomxs
  • Python 列表生成式

    >>> [x * xfor x in range(1, 6)]       --列表生成式

    py3study
  • Python学习(四)---- 列表生成式、生成器、迭代器和内置函数

    https://blog.csdn.net/fgf00/article/details/52061971

    智能算法
  • 【Python基础】列表的切片与遍历

    创建切片,我们需要指定使用的第一个元素和最后一个元素的索引。与range()函数一样,python在到达你指定的第二个索引前面的元素停止。

    DataScience
  • 用Python做游戏系列:Python基础(列表切片)

    列表切片,顾名思义,就是将列表切成一段一段的,而这种做法,就像一个新的列表.具体如下:

    张曙光
  • Python高级特性:列表生成式

    列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。

    听着music睡
  • Python 列表生成式(List Comprehensions)

    列表生成式(List Comprehensions),顾名思义,即为生成列表的表达式。列表生成式是Python内置的高级特性,简单却功能强大,充分体现了Pyt...

    Steve Wang
  • Python3--列表生成式

    你在使用python时,是不是遇到了这种情况,在for循环之前又加了一段代码,是不是感觉这种代码有点看不懂的感觉,

    py3study
  • Python基本语法 列表生成式

    举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):

    Coxhuang
  • python基础——列表推导式

    列表推导式能非常简洁的构造一个新列表:只用一条简洁的表达式即可对得到的元素进行转换变形

    菲宇
  • 2018年8月23日python中列表的高级操作:列表推导式,列表生成器,列表迭代器

    列表在我们平常的编程中经常会用到,多用于临时存储一些程序需要的数据, 向列表中添加数据时,有多种方式: 1.数据少的话直接定义列表中的数据 my1 = [...

    武军超
  • 如何学Python 第十三课 列表进阶-切片,列表推导式

    第十三课 列表进阶-切片,列表推导式 欢迎回来。在上一节课,我们学习了逻辑运算符和成员运算符。按照惯例,这节课我们讲点其他的东西,换换脑筋。 本节课我们来介绍一...

    用户1631416
  • Python 迭代器、生成器和列表解析

    迭代器在 Python 2.2 版本中被加入, 它为类序列对象提供了一个类序列的接口。 Python 的迭代无缝地支持序列对象, 而且它还允许迭代非序列类型, ...

    py3study
  • Python 高级特性(3)- 列表生成式

    日常工作中,range() 应该非常熟悉了,它可以生成一个迭代对象,然后可以使用 list() 将它转成一个 list

    小菠萝测试笔记

扫码关注腾讯云开发者

领取腾讯云代金券