首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Itertools组合错误/内存问题

Itertools组合错误/内存问题
EN

Stack Overflow用户
提问于 2019-03-16 05:42:13
回答 1查看 162关注 0票数 0

我是一名金融学研究生,刚接触Python。我必须为一个学校项目创建一个500个股票的可能组合列表。(在nCr术语中,我需要500C2、500C3、...、500C498、500C499、500C500)

我有以下代码:

代码语言:javascript
复制
    tickers = list of the 500 stocks I'm using

    import itertools

    w = len(tickers) + 1 
    i = 2
    test_list = []

    while i < w:
        combinations = list(itertools.combinations(tickers,i))
        test_list.append(combinations)

    i = i + 1

print(test_list)

然而,在运行代码时,我得到了下面的错误。任何帮助都是非常感谢的。

超出了IOPub数据速率。notebook服务器将暂时停止向客户端发送输出,以避免崩溃。要更改此限制,请设置配置变量--NotebookApp.iopub_data_rate_limit。当前值: NotebookApp.iopub_data_rate_limit=1000000.0 (字节/秒) NotebookApp.rate_limit_window=3.0 (秒)

EN

回答 1

Stack Overflow用户

发布于 2019-03-16 05:51:10

500只股票中有250只股票有500!/ (250!* 250!) = 116744315788277682920934734762176619659230081180311446124100284957811112673608473715666417775521605376810865902709989580160037468226393900042796872256 =~ 1.1674431578827768e+149组合,更不用说500C251、500C252等了,所以当您试图将它们全部追加到test_list中时,您的计算机内存自然无法容纳这么多的项目。

因此,无论您尝试对组合执行什么计算和/或I/O操作,都应直接在循环中执行,而不是将组合存储在列表中。但话又说回来,这是如此大量的组合,即使循环什么都不做,你也很可能在一生中很难完成循环。对于你试图解决的问题,你应该重新考虑你的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55191043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档