【发布时间】:2026-01-04 12:25:01
【问题描述】:
在python课程中得到了这个,仍然无法弄清楚:
输入 - 所需范围的起点和终点的字符串。
输出 - 包含所有范围内所有数字的数字生成器。
问题:制作一个函数,只使用两个生成器表达式(没有 for 循环)。
示例:
输入:
list(parse_ranges("1-2,4-4,8-10"))
期望的输出:
[1, 2, 4, 8, 9, 10]
到目前为止我已经完成了什么:
def parse_ranges(ranges_string):
first_generator = ([int(i[0]),int(i[-1])] for i in ranges_string.split(','))
second_generator = (range(j[0],j[1]) for j in first_generator)
return second_generator
我的输出:
[range(1, 2), range(4, 4), range(8, 0)]
【问题讨论】:
-
它必须是 2 个生成器,即 1 个不会?顺便说一句,您正在生成器中使用 for 循环 =]
-
为什么不在秒内对每个范围进行迭代?
-
或
chain.from_iterable(range(j[0],j[1]) for j in first_generator) -
@DaniMesejo 我假设在这样的挑战中禁止导入
itertools(或functools)。 -
@AKX。为什么?工作面试对吗?