python - 如何按顺序组合三个不同大小的列表 Python

标签 python string list for-loop zip

我有三个列表: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/

相关文章:

python - Django 评论更改成功 url

python - 如何在 Windows python 3.4 上安装 numpy?

python - 使用 Biopython 库删除 PDB 中的残留物

c++ - 合并排序 std :string 中的字符

尝试返回数字时,Javascript 将 Number 转换为 undefined

python - 在 GAE 中组合文本搜索和查询过滤器

java - 如何使 TextView 中的一个单词与字符串中的长文本可单击?

string - 计算给定字符串 Haskell 中 Char 的实例数

python - 创建知道每个列表长度的子列表

r - 列表中每个数据框的行数