对list 进行切片
  如列表
    L = ['Adam','Lisa','Bart','Paul']
    L[0:3]
    ['Adam','Bart']
    L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。
    即索引0,1,2,正好是3个元素。
  
  如果第一个索引是0,还可以省略:
    L[:3]
    ['Adam','Bart']
    切片操作还可以指定第三个参数:
      L[::2]
      ['Adam','Bart']
      第三个参数表示每N个取一个,上面的 L[::2] 会每两个元素取出一个来,
      也就是隔一个取一个。
      把list换成tuple,切片操作完全相同,只是切片的结果也变成了tuple
  
  倒序切片
    对于list,既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片,试试:
      L = ['Adam','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','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,'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,10]
        但如果要生成[1x1,2x2,3x3,...,10x10]怎么做?方法一是循环:
        L = []
        for x in range(1,11):
        L.append(x * x)
        [1,16,25,36,49,64,81,100]
        [x * x for x in range(1,11)]
        [1,100]

    条件过滤
      如果我们只想要偶数的平方,不改动 range()的情况下,可以加上 if 来筛选:
        [x * x for x in range(1,11) if x % 2 == 0]
        [4,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)

dawei

【声明】:唐山站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。