标签:
# -*- coding:utf-8 -*- class MyClass: """A simple example class""" i = 12345 def __init__(self, l, r): self.data = [] self.l=l self.r=r def f(self): return ‘hello world‘ print(MyClass.i) print(MyClass.__doc__) x=MyClass(1,2) print(x.data) print(x.l) class Bag: def __init__(self): self.data = [] def add(self, x): self.data.append(x) def addtwice(self, x): self.add(x) self.add(x) s = ‘abc‘ it = iter(s) print(next(it)) # 这种形式的访问清晰、简洁、方便。 # 迭代器的用法在 Python 中普遍而且统一。 # 在后台, for 语句在容器对象中调用 iter() 。 # 该函数返回一个定义了 next() 方法的迭代器对象 # ,它在容器中逐一访问元素。 # s=iter(Bag) class Reverse: """Iterator for looping over a sequence backwards.""" def __init__(self, data): self.data = data self.index = len(data) def __iter__(self): return self def __next__(self): if self.index == 0: raise StopIteration self.index = self.index - 1 return self.data[self.index] rev = Reverse(‘spam‘) k = iter(rev) print(next(k)) print(next(k)) # print(next(k)) # print(next(k)) # print(next(k)) for char in rev: print(char) # Generator 是创建迭代器的简单而强大的工具。 # 它们写起来就像是正规的函数, # 需要返回数据的时候使用 yield 语句。 # 每次 next() 被调用时, # 生成器回复它脱离的位置(它记忆语句最后一次执行的位置和所有的数据值)。 # 以下示例演示了生成器可以很简单的创建出来: def reverse2(data): for index in range(len(data)-1, -1, -1): yield data[index] for char in reverse2(‘golf‘): print(char) q = reverse2("ff") p = iter(q) print(next(p)) sum(i*i for i in range(10)) # sum of squares xvec = [10, 20, 30] yvec = [7, 5, 3] sum(x*y for x,y in zip(xvec, yvec)) # dot product
标签:
原文地址:http://www.cnblogs.com/nima/p/4981315.html