您的位置:首页 > 编程语言 > Python开发

Python[十七]:Iterator

2010-07-07 22:07 190 查看
#Python  Iterator
#iterator
for element in[1,2,3]:
print(element)
for element in (1,2,3):
print(element)
for key in {'One':1,'Two':2}:
print(key)
for char in "123":
print(char)
#for line in open('class2.py'):
#     print(line)
#show what happend for'next()'
s='abc'
it=iter(s)
print(it)
print(next(it))
print(next(it))
#print(next(it))
#print(next(it))
#create our own __iter__()and __next__() func
class Reverse:
"""iterator for looping over a sequense 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]
for char in Reverse('spam'):
print(char,end=' ')
print()
#generators
#Each time next() is called on it, the generator resumes where it left-off
#(it remembers all the data values and which statement was last executed).
def reverse(data):
for index in range(len(data)-1,-1,-1):
yield data[index]
for char in reverse('golf'):
print(char,end=' ')
print()
#Generator Expressions
print(sum(i*i for i in range(10)))   #sum of squares
xvec=[10,20,30]
yvec=[7,5,3]
print(sum(x*y for x,y in zip(xvec,yvec))) ##dot product
from math import pi,sin
#sine table
sine_table={x:sin(x*pi/180) for x in range(0,91)}
print(sine_table,end='  ')
print()
#unipue words
#------unique_words=set(word for line in page for word in line.split())
#------valedictorian=max((student.gpamstudent.name) for student in graduates)
data='golf'
print(list(data[i] for i in range(len(data)-1,-1,-1)))
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息