标签: generator

提升StopIteration和生成器中的return语句有什么区别?

我很好奇使用raise StopIterationreturn生成器中的语句之间的区别.

例如,这两个函数之间有什么区别吗?

def my_generator0(n):
    for i in range(n):
        yield i
        if i >= 5:
            return

def my_generator1(n):
    for i in range(n):
        yield i
        if i >= 5:
            raise StopIteration
Run Code Online (Sandbox Code Playgroud)

我猜的更"Python化"的方式来做到这一点是第二种方式(请纠正我,如果我错了),但据我可以看到两种方式提出一个StopIteration例外.

python generator stopiteration

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

生成器和数组有什么区别?

今天PHP团队发布了PHP 5.5.0版本,其中包括对生成器的支持.阅读文档,我注意到它完全可以用数组做.

PHP团队生成器示例:

// Only PHP 5.5
function gen_one_to_three() {
    for ($i = 1; $i <= 3; $i++) {
        // Note that $i is preserved between yields.
        yield $i;
    }
}

$generator = gen_one_to_three();
foreach ($generator as $value) {
    echo "$value\n";
}
Run Code Online (Sandbox Code Playgroud)

结果:

1
2
3
Run Code Online (Sandbox Code Playgroud)

但我可以使用数组做同样的事情.我仍然可以保持与早期版本的PHP兼容.

看看:

// Compatible with 4.4.9!
function gen_one_to_three() {
    $results = array();
    for ($i = 1; $i <= 3; $i++) {
        $results[] = …
Run Code Online (Sandbox Code Playgroud)

php arrays iterator generator

37
推荐指数
3
解决办法
8203
查看次数

为什么发酵机不能被腌制?

Python的泡菜(我说的是标准的Python 2.5/2.6/2.7)不能腌制锁,文件对象等.

它也不能pickle生成器和lambda表达式(或任何其他匿名代码),因为pickle实际上只存储名称引用.

在锁和依赖于操作系统的功能的情况下,原因为何你不能咸菜他们是明显的,是有道理的.

为什么你不能发泡?


:只是为了清楚起见, -我有兴趣的根本原因(或假设和进入该设计决策选择)为什么,而不是"因为它给你一个味酸错误".

我意识到这个问题有点广泛的目标,所以这里有一个经验法则,你是否回答:"如果这些假设被提出,或者允许的发电机的类型在某种程度上受到限制,那么酸洗发电机会再次工作吗?"

python generator pickle python-stackless

36
推荐指数
2
解决办法
9975
查看次数

如何缩小rand()的数字?

以下代码每秒输出一个随机数:

int main ()
{
    srand(time(NULL)); // Seeds number generator with execution time.

    while (true)
    {
        int rawRand = rand();

        std::cout << rawRand << std::endl;

        sleep(1);
    }
}
Run Code Online (Sandbox Code Playgroud)

我如何调整这些数字的大小,使它们总是在0-100的范围内?

c++ random generator mersenne-twister

34
推荐指数
4
解决办法
2万
查看次数

PHP API密钥生成器

有谁知道PHP的任何API密钥生成器脚本/类?该类应具有方法generate,它将生成一个键和isValid()方法,以检查该键是否有效.

php security key generator api-key

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

我应该包含<meta generator>标签吗?

假设我有某种专有的Web框架.我应该<meta generator="My framework">在生成的文件中包含标签吗?

我注意到StackExchange 0.9应用程序就是这样做的,并且想知道这样做的优缺点是什么.它是否有任何影响,或者仅对看到来源的人有用?

html generator meta-tags

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

"'生成器'对象不可订阅"错误

在尝试解决Project Euler Problem 11时,为什么我从代码的第5行收到此错误?

for x in matrix:
    p = 0
    for y in x:
        if p < 17:
            currentProduct = int(y) * int(x[p + 1]) * int(x[p + 2]) * int(x[p + 3])
            if currentProduct > highestProduct:
                print(currentProduct)
                highestProduct = currentProduct
        else:
                break
            p += 1
Run Code Online (Sandbox Code Playgroud)
'generator' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)

python generator

33
推荐指数
1
解决办法
5万
查看次数

无界范围()

是否存在无限制版本range(或xrangePython 2),还是需要手动定义?例如

squares = (x*x for x in range(n))
Run Code Online (Sandbox Code Playgroud)

只能给我一个正方形的发电机(n-1)**2,我看不到任何明显的方式来打电话,range(infinity)所以它只是继续卡车'.

python generator range

33
推荐指数
1
解决办法
8005
查看次数

是否有可能将列表类型转换为生成器而不进行迭代?

我知道可以将生成器转换为"低级别"(例如list(i for i in xrange(10)))的列表,但是可以在不先遍历列表的情况下进行反向(例如.(i for i in range(10)))吗?

编辑:删除这个词是cast为了清楚我正在努力实现的目标.

编辑2:实际上,我认为我可能在基础层面误解了发电机.这将教会我在早晨喝咖啡之前不要发布SO问题!

python list generator

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

"yield from"语法在asyncio中的作用是什么?它与"await"有什么不同?

从谁写ASYNCIO代码,但正在寻求更好地理解内部工作的人的角度来看,是什么yield from,await以及如何允许异步代码这些有用吗?

有一个高度赞成的问题询问yield from语法的用法和解释异步和等待的问题,但两者都深入讨论了不同的主题,并不是对底层代码及其如何适应asyncio的简明解释.

python generator coroutine async-await python-asyncio

32
推荐指数
1
解决办法
9130
查看次数