- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章python生成器,可迭代对象,迭代器区别和联系由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
生成器,可迭代对象,迭代器之间究竟是什么关系?
用一幅图来概括:
1.生成器 。
定义生成器 。
方式一:
1
2
3
|
/
/
区别于列表生成式 gen
=
[x
*
x
for
x
in
range
(
5
)]
gen
=
(x
*
x
for
x
in
range
(
5
))
print
(gen)
/
/
Out:<generator
object
<genexpr> at
0x00000258DC5CD8E0
>
|
方式二:
1
2
3
4
5
6
7
|
def
fib():
prev, curr
=
0
,
1
while
True
:
yield
curr
prev, curr
=
curr, curr
+
prev
f
=
fib()
print
(f)
/
/
Out:<generator
object
fib at
0x00000258DC5CD150
>
|
定义成功后,我们可以利用next()访问生成器下一个元素 。
1
2
3
4
5
|
print
(
next
(gen))
/
/
0
print
(
next
(gen))
/
/
1
...
print
(
next
(gen))
/
/
16
print
(
next
(gen))
/
/
StopIteration
|
但一般用for循环遍历 。
1
2
|
for
n
in
gen:
print
(n)
/
/
0
1
4
9
16
|
2.迭代器 。
任何实现了__iter__和__next__()方法的对象都是迭代器。__iter__返回迭代器自身,__next__返回容器中的下一个值。所以生成器是特殊的迭代器,她内部具有这两种方法.
一个自定义的迭代器如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
class
Fib:
def
__init__(
self
):
self
.prev
=
0
self
.curr
=
1
def
__iter__(
self
):
return
self
def
__next__(
self
):
value
=
self
.curr
self
.curr
+
=
self
.prev
self
.prev
=
value
return
value
f
=
Fib()
count
=
1
for
n
in
f:
print
(n)
count
=
count
+
1
if
count>
=
10
:
break
/
/
Out:
1
1
2
3
5
8
13
21
34
|
3.可迭代对象 。
像list,tuple,set,dict,str等可以直接作用于for循环的对象,称为可迭代对象。可迭代对象实现了__iter__方法,用于返回迭代器.
1
2
3
4
|
demo
=
[
1
,
2
,
3
,
4
]
print
(
isinstance
(demo, Iterable))
/
/
True
iter_object
=
iter
(demo)
print
(iter_object)
/
/
<list_iterator
object
at
0x00000258DC5EF748
>
|
原文链接:https://segmentfault.com/a/1190000013121618 。
最后此篇关于python生成器,可迭代对象,迭代器区别和联系的文章就讲到这里了,如果你想了解更多关于python生成器,可迭代对象,迭代器区别和联系的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
如果您有超过 1 个具有相同类名的(动态)文本框,并使用 jquery 循环遍历每个所述文本框,您是否可以假设每次选择文本框的顺序都是相同的? 示例: 文本框 1 值 = 1文本框 2 值 = 2文本
有人知道为什么这段代码无法顺利运行吗?它似乎不喜欢使用yield关键字进行迭代:我正在尝试从任何级别的列表或字典中挖掘所有数字(对列表特别感兴趣)。在第二次迭代中,它找到 [2,3] 但无法依次打印
我关于从 mysql 数据库导出数据并将其保存到 Excel 文件(多表)的创建脚本。我需要让细胞动态基因化。该脚本正确地显示了标题,但数据集为空。当我“回显”$value 变量时,我检查了数据是否存
我正在尝试在 Python 中运行模拟,由此我绘制了一个数组的随机游走图,给定了两个变量参数的设定水平。 但是,我遇到了一个问题,我不确定如何迭代以便生成 250 个不同的随机数以插入公式。例如我已经
我是学习 jquery 的新手,所以如果这是一个相对简单的问题,我深表歉意。我有一个 ID 为 ChartstoDisplay 的 asp.net 复选框列表。我正在尝试创建 jquery 来根据是否
我正在尝试根据在任意数量的部分中所做的选择找出生成有效案例列表的最佳方法。也许它不是真正的算法,而只是关于如何有效迭代的建议,但对我来说这似乎是一个算法问题。如果我错了,请纠正我。实现实际上是在 Ja
如果我使用 sr1 为 www.google.com 发送 DNSQR,我会收到几个 DNSRR(s) 作为回复,例如(使用 ans[DNSRR].show() 完成): ###[ DNS Resou
假设有这样一个实体类 @Entity public class User { ... public Collection followers; ... } 假设用户有成千上万的用户关注者。我想分页..
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: Nested jQuery.each() - continue/break 这是我的代码: var steps =
我刚从 F# 开始,我想遍历字典,获取键和值。 所以在 C# 中,我会说: IDictionary resultSet = test.GetResults; foreach (DictionaryEn
我知道已经有很多关于如何迭代 ifstream 的答案,但没有一个真正帮助我找到解决方案。 我的问题是:我有一个包含多行数据的txt文件。 txt 文件的第一行告诉我其余数据是如何组成的。例如这是我的
我有 12 个情态动词。我想将每个模态的 .modal__content 高度与 viewport 高度 进行比较,并且如果特定模态 .modal__content 高度 vh addClass("c
在此JSFiddle (问题代码被注释掉)第一次单击空单元格会在隐藏输入中设置一个值,并将单元格的背景颜色设置为绿色。单击第二个空表格单元格会设置另一个隐藏输入的值,并将第二个单元格的背景颜色更改为红
这是一个非常具体的问题,我似乎找不到任何特别有帮助的内容。我有一个单链表(不是一个实现的链表,这是我能找到的全部),其中节点存储一个 Student 对象。每个 Student 对象都有变量,尽管我在
有没有办法迭代 IHTMLElementCollection? 比如 var e : IHTMLLinkElement; elementCollection:IHTMLElementCollect
我正在尝试用 Java 取得高分。基本上我想要一个 HashMap 来保存 double 值(因此索引从最高的 double 值开始,这样我更容易对高分进行排序),然后第二个值将是客户端对象,如下所示
我想在宏函数中运行 while/until 循环,并限制其最大迭代次数。我找到了如何在“通常”sas 中执行此操作: data dataset; do i=1 to 10 until(con
Iterator iterator = plugin.inreview.keySet().iterator(); while (iterator.hasNext()) { Player key
晚上好我有一个简单的问题,我警告你我是序言的新手。假设有三个相同大小的列表,每个列表仅包含 1、0 或 -1。我想验证对于所有 i,在三个列表的第 i 个元素中,只有一个非零。 此代码针对固定的 i
我在 scheme 中构建了一个递归函数,它将在某些输入上重复给定函数 f, n 次。 (define (recursive-repeated f n) (cond ((zero? n) iden
我是一名优秀的程序员,十分优秀!