python学习(3)

Python学习(3)
切片(Slice):根据索引范围取出字符串里面的内容,比如: l=range(100)   l[:8] [0, 1, 2, 3, 4, 5, 6, 7] 
              l[:10:2]  [0, 2, 4, 6, 8]
    list、tuple、set 、字符串都可以做切片操作
迭代(iteration):Python的迭代器比较强悍,用for...in...迭代只要是可迭代对象都是可以的list、tuple、dict、set、字符串也可以。例如:
    >>> d = {'a': 1, 'b': 2, 'c': 3}
    >>> for key in d:
    ...     print key
    ...
    a
    c
    b
列表生成式:实际上是Python里面非常强大的创建List的方法,比如你想创建一个List是由1~10的平方组成的,你可以这样写:
   >>> l=[]
   >>> for n in range(1,10):
   ...     l.append(n*n)
   ...
   >>> l
   [1, 4, 9, 16, 25, 36, 49, 64, 81]
   当然Python又提供了一种新的列表生成:[x*x for x in range(1,11)] 就可以了,非常简洁,但是效果一样。
   下面是大写转小写方法:
   l=['Hello','World','Apple',9]
   i=0
   for n in l:
    if isinstance(n,str):
     l[i]=n.lower()
    i=i+1
   print l
生成器(generator):为了节省内存,list里面的元素不必都存,根据一种算法在循环过程推算出后面的元素:实际上只要把列表生成器[]改成()就可以了,例如:
     >>> g=(x*x for x in range(10))
     >>> g.next()
     0
     generator和函数的执行流程不一样。函数是顺序执行,遇到return语句或者最后一行函数语句就返回。
     而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。例如:
     >>> def odd():
     ...     print 'step 1'
     ...     yield 1
     ...     print 'step 2'
     ...     yield 3
     ...     print 'step 3'
     ...     yield 5
     ...
     >>> o = odd()
     >>> o.next()   #调用时先打印‘step 1’,然后遇到yield然后返回一个1
     step 1
     1
     >>> o.next()  #调用时从上次返回的yield的下一句执行。
     step 2
     3
     >>> o.next() 
     step 3
     5
     >>> o.next()  #抛出StopIteration错误
     Traceback (most recent call last):
       File "<stdin>", line 1, in <module>
     StopIteration

原文地址:https://www.cnblogs.com/lout/p/3832286.html