Python3 zip()函数的坑

最近在学习谷歌机器学习框架TensorFlow

遇到一个特征工程的处理函数

调用第一次的时候打印结果是正确的,就是这句

selected_training_examples = select_and_transform_features(training_examples)

而执行这句

selected_validation_examples = select_and_transform_features(validation_examples)

死活不会执行print(r)

最后查了一下发现问题出在这一句:

LATITUDE_RANGES = zip(range(32, 44), range(33, 45))

python2的zip()函数返回的是一个列表,也就是说

LATITUDE_RANGES = zip(range(32, 44), range(33, 45))返回的是

[(32, 33), (33, 34), (34, 35), (35, 36), (36, 37), (37, 38), (38, 39), (39, 40), (40, 41), (41, 42), (42, 43), (43, 44)]

而我使用的是python3,zip函数返回的是一个元组对象

zip在python3中,处于优化内存的考虑,只能访问一次

所以就出现了这个函数调用第2次不会去访问LATITUDE_RANGES的现象。

解决方法:

把LATITUDE_RANGES = zip(range(32, 44), range(33, 45))换成

LATITUDE_RANGES = [(32, 33), (33, 34), (34, 35), (35, 36), (36, 37), (37, 38), (38, 39), (39, 40), (40, 41), (41, 42), (42, 43), (43, 44)]即可
 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值