当前位置: 首页 > 知识库问答 >
问题:

为什么zip(*(range(1000),)*1000000)这么快?[副本]

翟沈义
2023-03-14

在Python3中,zip(*(range(1000),)*1000000)行是如何在不到一秒钟的时间内执行的,尽管它应该处理很多项?

共有1个答案

欧阳子石
2023-03-14

因为从python3开始,zip返回一个迭代器,所以它实际上会根据您的请求生成项。

rangemapfilter也是如此。

以前,有rangexrangezipzip,其中第一个在内存中创建整个序列,然后开始对其进行迭代,而第二个在动态中生成元素。从python3开始,他们删除了另一个版本,默认的版本是迭代器。

>

  • range()现在的行为与以前的xrange()类似,不同的是它可以使用任意大小的值。后者已不复存在。

    zip()现在返回一个迭代器。

  •  类似资料:
    • 问题内容: 当我遇到性能问题时,我只是更改了一个正在编写的程序,以将数据存储为numpy数组,而两者之间的区别令人难以置信。最初耗时30分钟,而现在耗时2.5秒! 我想知道它是如何做到的。我认为这是因为它消除了对循环的需要,但除此之外,我感到很困惑。 问题答案: 块状阵列是均质类型的密集堆积阵列。相比之下,Python列表是指向对象的指针数组,即使它们都属于同一类型。因此,您可以获得引用局部性的好

    • 问题内容: 当我使用固定内存进行CUDA数据传输时,我发现数据传输速度大大提高。在linux上,实现此目标的底层系统调用是mlock。从mlock的手册页中可以看出,锁定该页可防止将其换出: mlock()将页面锁定在地址范围内,该地址范围从addr开始并持续len个字节。当调用成功返回时,保证所有包含指定地址范围一部分的页面都驻留在RAM中; 在测试中,我的系统上有几千个可用内存,因此从不存在内

    • Haskell(使用编译器)比您预期的要快得多。如果使用得当,它可以接近低级语言。(Haskellers最喜欢做的一件事是尝试将C语言的5%以内(甚至超过它,但这意味着您使用的是一个低效的C程序,因为GHC将Haskell编译为C)。)我的问题是,为什么?

    • 本文向大家介绍单线程的 Redis 为什么这么快?相关面试题,主要包含被问及单线程的 Redis 为什么这么快?时的应答技巧和注意事项,需要的朋友参考一下 Redis 有多快?官方给出的答案是读写速度 10万/秒,如果说这是在单线程情况下跑出来的成绩,你会不会惊讶?为什么单线程的 Redis 速度这么快?原因有以下几点: 纯内存操作:Redis 是完全基于内存的,所以读写效率非常的高,当然 Red

    • 我在中使用带有4.1版本模拟器的android最新版本sdk。一切都很好。但是在我的中,对于任何应用程序的每次运行,我都会得到以下语句。 即使在Hello world应用程序中,我也得到相同的logcat输出。我没有在我的应用程序中使用多线程。有人能告诉我为什么在我的logcat中得到这些日志。 这是我的密码 在我的异步任务中,我从服务器获取JSONArray,解析它并列出。

    • 谁能告诉我为什么吗?类的构造函数是,但是编译器仍然声称找不到它的构造函数。