作者honyen (...)
看板Python
标题[问题] for 回圈取完值,原本zip物件就变空了
时间Mon Apr 10 17:26:32 2017
做法是读档案後,将资料放入一zip物件
zipobj = zip(date2num(r['date']),r['open'],r['close'],r['volume'])
dates = [x[0] for x in zipobj]
volume = [x[3] for x in zipobj]
print dates 後会有资料,但是print volume就会回传[]
想请问上面for回圈的做法,会造成原本的zipobj全部清空吗?
最近开始自学python,这是参考网路上的程式码,
发现的问题,觉得疑惑…
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.228.206.21
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1491816395.A.31A.html
1F:→ zerof: zip是 generator, 只能用一次 04/10 17:33
2F:→ mikapauli: iterator不回头。这是从functional programming来的 04/10 19:25
3F:→ zerof: .... fp 里面有 iterator...? 楼上是认真的吗 04/10 19:42
4F:→ uranusjr: 二楼说的应该是 generator, 不过仍然不太准确, 虽然这个 04/10 21:26
5F:→ uranusjr: 概念是从 functional programming languages 开始流行, 04/10 21:26
6F:→ uranusjr: 但本身与 functional programming 关系不大 04/10 21:27
7F:→ mikapauli: python里generator继承自iterator 04/11 14:12
8F:→ mikapauli: 但zip不是generator吧 04/11 14:14
9F:→ mikapauli: zip也没有send, throw, close等methods 04/11 14:15
10F:→ mikapauli: 至少我看ABC里是这样写的 04/11 14:16
11F:→ s860134: generator iterator iterable 傻傻分不清 04/12 08:47
12F:→ physheepy: 你应该是在用python3 看的范例却是python2的 04/12 12:37
13F:→ physheepy: zip在python2 是产生new list of turples 所以我用 04/12 12:37
14F:→ physheepy: python2可正常执行 python3中 zip改成 generator 04/12 12:38
15F:推 physheepy: 你原本的code 加一行 zipobj2 = [ x for x in zipobj] 04/12 12:40
16F:→ physheepy: 应该就可以了(我不确定 因为我是用python2 测试看看吧) 04/12 12:40
17F:→ physheepy: 另外处理表格建议使用pandas 04/12 12:41
18F:→ physheepy: 补充一下 虽然加一行可以解决你的问题 但这种用法是违 04/12 12:49
19F:→ physheepy: 背generator精神的 (刚发现更简单的写法 04/12 12:50
20F:→ physheepy: zipobj = list(zip(.....)) 04/12 12:51
21F:推 day831231: 为什麽不用一个回圈包整个呢,发挥generator的特性, 04/18 20:33
22F:→ day831231: 又不用跑两个回圈 04/18 20:33