相关疑难解决方法(0)

在Python中跳过迭代变量的N值的最佳方法是什么?

在许多语言中,我们可以做类似的事情:

for (int i = 0; i < value; i++)
{
    if (condition)
    {
        i += 10;
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能在Python中做同样的事情?以下(当然)不起作用:

for i in xrange(value):
    if condition:
        i += 10
Run Code Online (Sandbox Code Playgroud)

我可以这样做:

i = 0
while i < value:
  if condition:
    i += 10
  i += 1
Run Code Online (Sandbox Code Playgroud)

但我想知道在Python中是否有更优雅(pythonic?)的方式.

python iterator

28
推荐指数
3
解决办法
3万
查看次数

如何检查迭代器是否实际上是迭代器容器?

我有一个下面的迭代器容器的虚拟示例(真正的读取文件太大而不适合内存):

class DummyIterator:
    def __init__(self, max_value):
        self.max_value = max_value

    def __iter__(self):
        for i in range(self.max_value):
            yield i

def regular_dummy_iterator(max_value):
    for i in range(max_value):
        yield i
Run Code Online (Sandbox Code Playgroud)

这允许我多次迭代该值,以便我可以实现这样的事情:

def normalise(data):
    total = sum(i for i in data)
    for val in data:
        yield val / total

# this works when I call next()
normalise(DummyIterator(100))

# this doesn't work when I call next()
normalise(regular_dummy_iterator(100))
Run Code Online (Sandbox Code Playgroud)

如何检查normalize函数,我正在传递一个迭代器容器而不是一个普通的生成器?

python generator python-3.x

6
推荐指数
1
解决办法
385
查看次数

标签 统计

python ×2

generator ×1

iterator ×1

python-3.x ×1