python語法之迭代器

可迭代對象:能夠重複取值,而且每一次的取值都是在上一次的結果之上而來的。凡是內部有_iter_()方法的都是可迭代對象。spa


迭代器對象:經過序列類型._iter_(),獲得返回值就是迭代器對象。code


迭代取值方式:
print(迭代器對象._next_())對象


for循環內部原理:
for item in 可迭代對象:
print itemblog

#重複迭代,每一次迭代的結果都是基於上一次的結果而來的
#可迭代對象:str, list, tuple, set, dict, f文件
# str = 'hello world'
# list = [1,2,3]
# tuple = (4,5,6)
# dict = {'name':'nick','age':18}
# set = {7,8,9}
# f = open('a.txt','r',encoding='utf-8')

#str 示範
# str_iter = str.__iter__()  #經過str._iter_()獲取迭代器對象str_iter
# print(str_iter.__next__())   #經過迭代器對象str_iter._next_()獲取值
# print(str_iter.__next__())
# print(str_iter.__next__())

#由於上述作法都是重複,可寫成循環
#循環版本
#str_iter = str.__iter__()
# while True:
#     print(str_iter.__next__())   #雖然能夠循環了,可是取完最後一個值後報錯:StopIteration

#解決辦法
# str_iter = str.__iter__()
# while True:
#     try:    #經過關鍵字try一直嘗試,捕獲異常
#         print(str_iter.__next__())
#     except StopIteration:     #直到遇到StopIteration
#         break                 #就停下來

#for循環版本
# for item in f:
#     print(item)


#可迭代對象是迭代器對象嗎?
# str_iter = str.__iter__()
# print((str_iter is str))  #False  結論:可迭代對象不必定是迭代器對象

# list_iter = list.__iter__()
# print((list_iter is list))  #False  結論:可迭代對象不必定是迭代器對象

# tuple_iter = tuple.__iter__()
# print((tuple_iter is tuple))  #False  結論:可迭代對象不必定是迭代器對象

# set_iter = set.__iter__()
# print((set_iter is set))  #False  結論:可迭代對象不必定是迭代器對象

# dict_iter = dict.__iter__()
# print((dict_iter is dict))  #False  結論:可迭代對象不必定是迭代器對象

# f_iter = f.__iter__()
# print((f_iter is f))   #True   文件比較特殊,它既是可迭代對象,又能夠是迭代器對象

#迭代器對象也是一個可迭代對象
# str_iter = str.__iter__()
# print(
相關文章
相關標籤/搜索