全部学科
Python全栈
python
NodeJS全栈
nodejs

迭代器与生成器专项测试

15 题 30 分钟 难度:★★

考察知识点

  • 迭代器协议:__iter__和__next__方法、StopIteration异常
  • 生成器函数:yield关键字、生成器状态、惰性计算
  • 生成器表达式:语法形式、与列表推导式的对比
  • yield高级用法:yield from、send方法、close方法
💡 参考答案在文末
判断题
1

itertools是Python标准库模块,提供高效迭代工具函数,包括chain连接迭代器、zip_longest不等长配对、islice切片迭代器、count无限计数、cycle循环迭代等。

A

B

2

迭代器协议要求对象实现__iter__方法返回迭代器本身,以及__next__方法返回下一个元素或抛出StopIteration异常表示迭代结束。

A

B

3

自定义迭代器类需要实现完整的迭代器协议:__iter__方法返回迭代器本身,__next__方法返回下一个元素并在迭代结束时抛出StopIteration异常。

A

B

4

yield from语法用于将生成器的产出委托给另一个子生成器,简化嵌套生成器的编写,可以自动处理子生成器的所有产出和最终返回值。

A

B

5

itertools提供的count、cycle、repeat是无限迭代器,可以产生无限序列。使用时必须手动终止(如break或islice限制),否则会无限循环。

A

B

单选题
6

itertools.count(10, 2)产生的序列是:

A

10, 12, 14, 16...(无限)

B

10, 11, 12, 13...

C

10, 10, 10...

D

只产生10

7

迭代器的__next__方法在什么情况下抛出StopIteration?

A

每次调用时

B

没有更多元素时

C

遇到错误时

D

调用__iter__时

8

yield from iterable与for item in iterable: yield item的区别是?

A

两者完全相同

B

yield from可以处理子生成器的return值

C

for yield更高效

D

yield from不能用于列表

9

itertools.chain([1,2], [3,4])的输出是?

A

[[1,2], [3,4]]

B

[1,2,3,4]

C

[(1,3), (2,4)]

D

[1,2] + [3,4]

10

以下哪个是正确的可迭代对象设计(可多次迭代)?

A

只实现__next__

B

iter__返回self,实现__next

C

__iter__返回新的迭代器实例

D

只实现__iter__

填空题
11

itertools.____________连接迭代器。____________不等长配对。____________切片迭代器。count无限计数。cycle无限循环。repeat重复元素。from_iterable展开嵌套。内存高效,惰性计算。可处理无限序列。list(chain([1,2],[3]))返回[1,2,3]。

12

yield ____________委托子生成器。自动产出____________元素。可获取子生成器的____________值。简化嵌套迭代。chain生成器用yield from iterable。子生成器return值赋给result = yield from sub()。yield from支持双向通信。用于组合多个迭代器。

13

count(____________, ____________)无限计数。____________(seq)无限循环元素。repeat(obj, times)重复。无限迭代器需手动终止。用islice限制数量。用takewhile条件限制。用break退出循环。count(10,2)序列:10,12,14...无限。

14

迭代器协议:____________返回________________________返回下一个元素。迭代结束抛StopIteration。next()函数调用next方法。for循环自动处理StopIteration。迭代器只能正向遍历一次。可迭代对象需实现iter返回迭代器。

15

迭代器类实现________________________。__iter__返回____________。__next__返回元素或抛StopIteration。可迭代对象__iter__返回新迭代器。迭代器用完耗尽,可迭代对象可多次迭代。计数迭代器用index跟踪位置。自定义迭代器比生成器更灵活。

参考答案
1.正确 2.正确 3.正确 4.正确 5.正确 6.A 7.B 8.B 9.B 10.C 11.chain;zip_longest;islice 12.from;所有;return 13.start;step;cycle 14.iter;self;next 15.iter;next;self
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 运算符与表达式专项测试
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码