4

好吧,这很奇怪。我不明白,它变得非常令人沮丧。

  1. 我声明和数组(列表)
  2. 我用字符串(股票代码)启动第一行
  3. 对于所需的交易日数,我用零填充其余部分。
  4. 我想用当天要购买或出售的股票的数字填充“头寸”矩阵的某些元素。而不是只填充一个元素,而是填充整个列。

    # Initiating position matrix
    positions = []
    # Initiating a row of zeros (to fill position matrix later)
    empty_row = []
    # Symbols is a list of symbols that will be traded.
    for symbol in symbols:
        empty_row.append(0)
    
    # First row of positions will be symbols
    positions.append(symbols)
    
    # All other rows will be empty_rows
    for day in timestamps:
        positions.append(empty_row)
    

    然后我将确定我需要填充哪些“职位”元素。假设第 10 行第 1 列的元素(从零开始索引)。所以我这样做:

    职位[10][1] = 100

    我得到的结果是整个第 1 列充满了 100。不仅仅是元素。我究竟做错了什么?

4

1 回答 1

4

您 一遍又一遍地附加相同的空列表:

for day in timestamps:
    positions.append(empty_row)

您需要为每个新行创建一个新的“空”列表:

for day in timestamps:
    positions.append([0]*len(symbols))

您可以将所有这些放入列表理解中,因此您的整个代码将变为

positions = [symbols]
positions.extend([[0]*len(symbols) for day in timestamps])
于 2012-12-26T14:30:00.003 回答