通过可迭代对象,迭代器,理解dict,list,filter,map,zip,dict,list之间的联系

"""
理解迭代器原理后,无意中将以前的困扰的难点解开了。为什么有些对象,比如zip,filter,map对象能够使用list和dict方法转换
有些却不行,一切的一切都是和可迭代对象以及迭代器的概念有关

下面以zip为例

"""


a = ['age', 'height']
b = [18, '17cm']
c = zip(a, b)  # 返回来的是 zip对象,该对象中存在iter和next方法,则是一个迭代器,同样是一个可迭代对象
print(c.__next__())  # 因此可以直接输出:('age', 18),和能够使用for循环的原因


"""
dict,list与可迭代对象之间的关系
dict 接收可迭代对象作为参数,将对象中的每个元素转换成字典(前提是里面每个元素都是可迭代对象,且有两个元素,例如(age,18) 或 [age,18]
list 接收可迭代对象作为参数,将对象中的每个元素添加到列表中,具体使用如下

注意事项:list 和dict内部的实现同样是以for循环进行遍历添加属性到列表的,因此当使用list或dict遍历完后,下面再使用dict或list会得到空列表或字典
"""
print(list(c))   # 将每个值作为元素添加到列表 [('age', 18), ('height', '17cm')]
print(dict(c))  # {'age': 18, 'height': '17cm'}
print(dict(list(c)))  # {'age': 18, 'height': '17cm'}