我有三个列表:signal、returns 和 pct_list:
signal= ['signal0', 'signal1', 'signal2']
returns = ['retSCIENCE_MSFT','retLOVE_MSFT','retMUSIC_MSFT',
'retSCIENCE_YHOO', 'retLOVE_YHOO', 'retMUSIC_YHOO']
pct_list = ['Pct_MSFT', 'Pct_YHOO']
我尝试使用 zip 函数,结果如下:
ret_sig_list = list(zip(returns, signal, pct_list))
ret_sig_list
输出:
[('retSCIENCE_MSFT', 'signal0', 'Pct_MSFT'),
('retLOVE_MSFT', 'signal1', 'Pct_YHOO')]
我想要得到的是 MSFT 和 YHOO 都与相应的信号和百分比变化对齐,如下所示:
ret_sig_list = [('retSCIENCE_MSFT', 'signal0', 'Pct_MSFT'),
('retLOVE_MSFT', 'signal1', 'Pct_MSFT'),
('retMUSIC_MSFT', 'signal2', 'Pct_MSFT'),
('retSCIENCE_YHOO', 'signal0', 'Pct_YHOO'),
('retLOVE_YHOO', 'signal1', 'Pct_YHOO'),
('retMUSIC_YHOO','signal2', 'Pct_YHOO')]
我尝试使用 list(zip(returns, signal, pct_list)),但它似乎默认为三个列表中元素数量最少的 pct_list。
如果有人知道我如何解决这个问题,我将非常感激! 我想使用带有 for 循环的 ret_sig_list 来计算多只股票的百分比变化上升或下降,以根据相关词给出返回;科学、爱情、音乐等 我从一个名为 Pytrends 的 Google Trends Python 包中得到了一些话,我推荐它,它非常酷!
最佳答案
使用itertools.cycle
:
In [2]: from itertools import cycle
In [3]: list(zip(returns, cycle(signal), cycle(pct_list)))
Out[3]:
[('retSCIENCE_MSFT', 'signal0', 'Pct_MSFT'),
('retLOVE_MSFT', 'signal1', 'Pct_YHOO'),
('retMUSIC_MSFT', 'signal2', 'Pct_MSFT'),
('retSCIENCE_YHOO', 'signal0', 'Pct_YHOO'),
('retLOVE_YHOO', 'signal1', 'Pct_MSFT'),
('retMUSIC_YHOO', 'signal2', 'Pct_YHOO')]
关于python - 如何按顺序组合三个不同大小的列表 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43095630/