V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  aijam  ›  全部回复第 14 页 / 共 20 页
回复总数  381
1 ... 6  7  8  9  10  11  12  13  14  15 ... 20  
感觉没抓住重点,其实就是 Iterable 和 Iterator 的区别。
通俗地说,
- 能把里面的内容“逐一”取的容器是 Iterable,比如 list、string、dict 等。range 属于这一类。
- 为了将 Iterable 容器里的内容“逐一”取出来,我们需要通过 Iterator (即迭代器)。通过 iter()我们可以获得一个 Iterable 对应的 Iterator。
比如,
[1,2,3]是 list,所以是 Iterable,但它本身不是 Iterator。iter([1,2,3])才是它对应的 Iterator。
同理,range(10)也是 Iterable 而不是 Iterator。iter(range(10))才是它对应的 Iterator。
在实际代码中,
Iterator 最大的特点是“一次性”,用完了就不能用第二次。
比如,range 对象是可以多次用的。
r = range(5)
for i in r: print(i) # print 0 to 4
for i in r: print(i) # print 0 to 4
而如果返回的是 Iterator,你就只能用一次。
it = iter(range(5))
for i in it: print(i) # print 0 to 4
for i in it: print(i) # print nothing
range 范围作为一个“实体”概念,设计成可复用的 Iterable 更合理,这和 map/filter/zip 这些作为一次性“操作”存在的概念略有不同。当然这一定程度上也有 py2 的历史原因,过去无论 range/map/sorted 都统一返回 list,为了性能优化 py3 才分别返回 Iterable, Iterator 和 list。
2019-01-05 11:39:10 +08:00
回复了 jssyxzy 创建的主题 程序员 macbook 外接屏幕有什么好的方法?
应该是你的 macbook 电用完了。
2019-01-03 10:20:15 +08:00
回复了 talentl 创建的主题 Python 请问如何用 Python 实现如下计算功能
sum(2**x for x in range(1,6))
2018-12-31 09:54:13 +08:00
回复了 shadeofgod 创建的主题 程序员 2019 年了,来分享一下有哪些东西是你并不懂的
@beginor 上一句比喻和下一句的逻辑怎么感觉一点都不连贯?
2018-12-31 09:50:08 +08:00
回复了 Cheez 创建的主题 C 请教大家一个简单的 C 语言问题.
@enchilada2020 同感,lz 恰恰在学习过程中找到了 c 语言设计蹩脚的地方,提出这样的问题正说明 lz 有自己消化过。为什么说 switch fallthrough 是 c 的设计失误?最直接的例证是,参与过当年 c 语言开发的 Ken Thompson 在后来设计 golang 的时候尽管保留了 switch 语法但丢弃了 fallthrough,也不用程序员每次手工 break。其他从流行的脚本语言比如 perl/ruby/python 到新一代的编译语言比如 swift/kotlin/rust 无一不如此,要不就是直接没有 switch,即使有 switch 或者接近 switch 的语法也不会有 fallthrough。
2018-12-31 03:21:56 +08:00
回复了 shadeofgod 创建的主题 程序员 2019 年了,来分享一下有哪些东西是你并不懂的
不懂:写硬件驱动,寄存器分配问题,dependent type,FLP impossibility 第三步证明,实现 SMT solver,麦克斯韦方程,common lisp。
@lihongjie0209 和 c++的 operator overloading 有啥差别?
2018-12-30 17:06:01 +08:00
回复了 Cheez 创建的主题 C 请教大家一个简单的 C 语言问题.
从语义上说,switch 相当于 goto,case/default 相当于 label。
2018-12-20 08:46:46 +08:00
回复了 yuikns 创建的主题 程序员 工作两年的同事不知道逻辑回归是什么,这个正常吗?
工作两年的同事不知道:麦克斯韦方程 /chomsky hierarchy/axiomatic semantics/second-order logic/lamport clock/flp impossibility/word embedding/monte carlo simulation/IPv4 DF flag/sys.setrecursionlimit()...,嗯,不知道的好多,焦虑。
2018-12-13 12:43:26 +08:00
回复了 ns2250225 创建的主题 Python Python 类里面的方法太多写得太长,大家是怎样处理的啊 🎏
写少一点短一点
2018-12-12 20:03:55 +08:00
回复了 305835227fadf 创建的主题 Python Python 字典转元祖问题
我本来以为需要对应所以发了 2 楼,后来又看了一眼你写的还以为不要对应所以发了 3 楼,最后发现你想要对应。:D
2018-12-12 20:00:11 +08:00
回复了 305835227fadf 创建的主题 Python Python 字典转元祖问题
嗯,那就用我的,没问题
2018-12-12 19:56:43 +08:00
回复了 305835227fadf 创建的主题 Python Python 字典转元祖问题
要保证顺序的话按照我的应该可以
2018-12-12 19:55:03 +08:00
回复了 305835227fadf 创建的主题 Python Python 字典转元祖问题
第二个方法是最好的啦
2018-12-12 19:52:33 +08:00
回复了 305835227fadf 创建的主题 Python Python 字典转元祖问题
tuple(map(list, zip(*a.items())))
2018-12-12 19:27:00 +08:00
回复了 zealinux 创建的主题 Python 求教 Python 合并元组算法
2018-12-10 11:27:14 +08:00
回复了 aijam 创建的主题 分享创造 总结了一些减少 bug 的方法
@crayygy @nekoneko code is uncountable
2018-11-30 07:38:03 +08:00
回复了 codechaser 创建的主题 C C++中`auto`这个关键字的一点疑惑。
同理,auto *ppp 声明了 ppp 是一个指针,但我们不知道这个指针指向的类型是什么,需要 auto 来推导 ppp 是什么类型的指针。那么当你写 auto *ppp = p,说明 ppp 和 p 一样都是 int*。
1 ... 6  7  8  9  10  11  12  13  14  15 ... 20  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2635 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 35ms · UTC 15:13 · PVG 23:13 · LAX 07:13 · JFK 10:13
Developed with CodeLauncher
♥ Do have faith in what you're doing.