Python zip()函数使用及常见报错处理

zip用法

zip即将多个可迭代对象组合为一个可迭代的对象,每次组合时都取出对应顺序的对象元素组合为元组,直到最少的对象中元素全部被组合,剩余的其他对象中未被组合的元素将被舍弃。 

keys = ['one', 'two', 'three', 'four']
values = [1, 2, 3]
d = zip(keys, values)
print(d)
#<zip object at 0x0000023A69F436C8>

for item in d:
    print(item)
#('one', 1)
#('two', 2) 
#('three', 3)

 

*zip用法

从已迭代的对象中还原至原来的对象,类似在压缩后“解压”。

# zip
keys = ['one', 'two', 'three', 'four']
values = [1, 2, 3]
d = zip(keys, values)

older = list(zip(*d))
print(older[1])
#(1, 2, 3)

print(older[0])
#('one', 'two', 'three')

 

*zip常见报错

以下代码会打印出item的值,同时报错:IndexError: list index out of range

keys = ['one', 'two', 'three', 'four']
values = [1, 2, 3]
d = zip(keys, values)
for item in d:
    print(item)
older = list(zip(*d))
print(older[1])
print(older[0])

报错原因:

zip返回的值是一个迭代器指针,使用for循环后,将指针至于数据d的结尾,再转化为list时会out of range。

修改思路:

1. 重新zip一遍

keys = ['one', 'two', 'three', 'four']
values = [1, 2, 3]
d = zip(keys, values)
for item in d:
    print(item)
d = zip(keys, values)
older = list(zip(*d))
print(older[1])
print(older[0])

#('one', 1)
#('two', 2)
#('three', 3)
#(1, 2, 3)
#('one', 'two', 'three')

2. 保存zip后数据d的地址,以便再次使用。

   具体使用方法参考https://blog.csdn.net/Kelvin_Yan/article/details/86546784

 

ref:https://blog.csdn.net/Karven_/article/details/90216420

python2与python3差别https://blog.csdn.net/u012509485/article/details/78203784

Python zip()函数的一次踩坑记https://blog.csdn.net/benpaodelulu_guajian/article/details/81869462

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值