我是一名金融学研究生,刚接触Python。我必须为一个学校项目创建一个500个股票的可能组合列表。(在nCr术语中,我需要500C2、500C3、...、500C498、500C499、500C500)
我有以下代码:
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 (秒)
发布于 2019-03-16 05:51:10
500只股票中有250只股票有500!/ (250!* 250!) = 116744315788277682920934734762176619659230081180311446124100284957811112673608473715666417775521605376810865902709989580160037468226393900042796872256 =~ 1.1674431578827768e+149组合,更不用说500C251、500C252等了,所以当您试图将它们全部追加到test_list中时,您的计算机内存自然无法容纳这么多的项目。
因此,无论您尝试对组合执行什么计算和/或I/O操作,都应直接在循环中执行,而不是将组合存储在列表中。但话又说回来,这是如此大量的组合,即使循环什么都不做,你也很可能在一生中很难完成循环。对于你试图解决的问题,你应该重新考虑你的方法。
https://stackoverflow.com/questions/55191043
复制相似问题