当前位置: 首页 > 面试题库 >

在Python中获取生成器的第n个项

有品
2023-03-14
问题内容

有没有一种语法更简洁的方式编写以下内容?

gen = (i for i in xrange(10))
index = 5
for i, v in enumerate(gen):
    if i is index:
        return v

生成器应该具有一个gen[index]表达式,该表达式充当列表,但在功能上与上述代码相同,这似乎是很自然的。


问题答案:

一种方法是使用
itertools.islice

>>> gen = (x for x in range(10))
>>> index = 5
>>> next(itertools.islice(gen, index, None))
5


 类似资料:
  • 问题内容: 我已经制作了一个生成器来逐字读取文件,并且效果很好。 在列表中获取n个下一个值的最简单方法是什么? 问题答案: 用途:

  • 问题内容: 有了linq,”显示标记为“ linq”的问题”)我会 如何使用Python做到这一点? 问题答案: 要切片列表,有一个简单的语法: 您可以省略任何参数。这些都是有效的:,, 切片发电机 您不能直接在Python中切片生成器。将使用语法将对象包装在新的切片生成器中 切记,切片发电机会部分耗尽它。如果要保持完整的生成器完整,可以先将其转换为元组或列表,例如:

  • 问题内容: 我想从python中的N位数字中提取第n位数字。例如: 我如何在python中做类似的事情?我应该先将其更改为字符串,然后再将其更改为int以进行计算吗? 问题答案: 首先将数字视为字符串 然后获得第一个数字: 第四位数: 编辑: 这将返回数字作为字符,而不是数字。转换回使用:

  • 问题内容: 我正在尝试用Python编写Haskel函数’splitEvery’。这是它的定义: 这个的基本版本工作正常,但是我想要一个可以与生成器表达式,列表和迭代器一起使用的版本。 并且 ,如果有一个生成器作为输入,则应该返回一个生成器作为输出! 测验 当前实施 这是我当前拥有的代码,但不适用于简单的列表。 此代码不适用于生成器表达式(感谢软糖修复该表达式): 必须有一个简单的代码来进行拆分。

  • 问题内容: 我需要知道如何让NetBeans使用快捷方式生成getter和setter。 问题答案: 将光标放在班级内部,然后按+ 并从上下文菜单中选择。