Python遍历
a = [1,2,3]
-
in
语句for item in a:print(item) #output:1 2 3
-
range()
range()
函数生成一个有序列表的迭代器,并且可指定列表的start、end、step。语法为range(start,end[,step])
, 表示区间[start,end),步长为step,默认为step=1for i in range(len(a)):print(a[i]) #output:1 2 3for i in range(len(a)-1,-1,-1):print(a[i]) #output:3 2 1
-
enumerate()
enumerate(list[,init_index])
函数生成以(index, value)为元素的tuple,并可指定初始的下标(默认为0)。for index,value in enumerate(a):print(index,value) #output: 0 1\n 1 2\n 2 3\nfor index,value in enumerate(a):print(index,value) #output: 1 1\n 2 2\n 3 3\nlist(enumerate(a,1)) #output: [(1,1),(2,2),(3,3)]
-
iter()
for item in iter(a):print(item) #output: 1 2 3iterator_a = iter(a) print(next(iterator_a)) # 1 print(next(iterator_a)) # 2 print(next(iterator_a)) # 3
iter()
有更高级的用法,比如自定义一个对象,并其中包含__iter__()
和__next__()
函数,每调用一次iter
的next()
函数都执行对象的__next__
函数class Pow2:"""Class to implement an iteratorof powers of two"""def __init__(self, max = 0):self.max = maxdef __iter__(self):self.n = 0return selfdef __next__(self):if self.n <= self.max:result = 2 ** self.nself.n += 1return resultelse:raise StopIterationif __name__ == "__main__":a = Pow2(4)it_a = iter(a)for i in range(5):print(next(it_a)) #output: 1 2 4 8 16