|
|
1
77
表示为生成函数:
用法:
|
|
|
2
34
|
|
|
3
12
输出:
如果您要查找的项目是列表中的第一个项目,这将环绕并返回列表中的最后一个项目。换句话说,将第三行更改为
|
|
|
4
10
在处理需要一些上下文的生成器时,我经常使用下面的实用程序函数在迭代器上提供滑动窗口视图:
它将一次生成N个项目的序列视图,并将步移到不同的位置。如。
在前向/后向情况下使用时,如果还需要在没有下一个或上一个值的情况下处理数字,则可能需要在序列中填充适当的值,例如“无”。
|
|
|
5
8
我知道这很旧,但为什么不直接使用它呢
如果你运行它,你会发现它会抓取上一个和下一个项目,而不关心列表中重复的项目。 |
|
|
6
5
请从中查看looper实用程序 Tempita project 。它为循环项提供一个包装器对象,该对象提供属性,如previous、next、first、last等。 看一看 source code 对于looper类来说,它非常简单。还有其他这样的循环助手,但我现在记不起其他的了。 例子:
|
|
|
7
3
如果你想解决iterables的问题
|
|
|
8
1
就在之前? 你指的是以下内容,对吗?
如果你愿意 N 在前面的项目中,您可以使用一种大小为的循环队列来实现这一点 N .
|
|
|
9
1
我不认为有直接的方法,尤其是因为iterable可以是 generator (不要回去)。你可以用 sequences 通过将元素的索引传递到循环体:
这个
|
|
|
10
1
我知道这是一个老问题,但我发现展示一个简单的解决方案很重要,这个解决方案也适用于生成器和其他类型的iterables,不像大多数答案只适用于类似列表的对象。这与Brian的答案和这里的解决方案有些相似: https://www.programcreek.com/python/example/1754/itertools.tee
或者打电话
|
|
|
11
1
对于任何升级到python 3.10的人来说,这样的函数都是直接添加到 itertools
|
|
|
12
1
如果您不想导入任何内容,下面是一个使用for循环访问生成器的前一项的示例。在下一次调用之前,它使用一个类变量来存储下一个结果。如果您想要比前一项更多的内容,那么这个变量可以是一个小列表。类中有一个方法生成器,它有效地扩展了next()内置项,以包含前面的项分配。 代码(Python 3.10):
它使用内置函数next(),默认参数。 |
|
|
13
0
迭代器只有next()方法,所以不能向前或向后看,只能得到下一项。 如果要迭代列表或元组,enumerate(iterable)可能很有用。 |
|
|
14
-2
虽然不是很像蟒蛇,但它很简单:
方法:保护边缘 |
|
|
15
-7
最简单的方法是在列表中搜索项目:
当然,这只有在列表中只包含唯一项时才有效。另一个解决方案是:
|