|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- n = [1, 2, 3, 4, 5, 6]
- ABC = ['A', 'B', 'C']
- abc = 'abc'
- z = zip(n, ABC, abc)
- list(z) #输出[(1, 'A', 'a'), (2, 'B', 'b'), (3, 'C', 'c')]
- z = zip(n, ABC, abc)
- dict(z) #报错
复制代码
执行完上面代码,再执行list(z)。输入的结果就是[(2, 'B', 'b'), (3, 'C', 'c')]。
请问 dict对z做了啥操作?
本帖最后由 Twilight6 于 2020-7-6 17:30 编辑
这是因为zip 函数是返回 zip对象,而 zip 对象是个迭代器
当你 dict 时候对 z 进行转化 ,第一次肯定是先转化 (1, 'A', 'a') , 但是此时转化失败,因为 不能构成键值对
此时迭代器 z 已经被消耗掉一次了 , 剩下的 还有 ('B', 'b', 2), ('C', 'c', 3),所以你后面一次打印的 list 是将迭代器中剩下的转化为了 列表
你可以试着这样的代码:
- n = [1, 2, 3, 4, 5, 6]
- ABC = ['A', 'B', 'C']
- abc = 'abc'
- z = zip(n, ABC, abc)
- print(next(z)) # 先消耗一次迭代器的值
- print(list(z)) # 然后将迭代器里面的值全部转为列表
复制代码
发现返回结果为:
- (1, 'A', 'a')
- [(2, 'B', 'b'), (3, 'C', 'c')]
复制代码
|
|