如何连续增加二维列表

时间:2019-07-15 19:45:45

标签: python

此分配的一部分处理一维列表和二维列表。二维列表有10行,每行4个元素;一维列表包含4个元素。

这些分配要求将gamma列表(请参见代码)复制到inStock列表的第一行。然后,第一行之后的每一行都需要连续增加3。通过连续进行,我意味着将inStock的第一行中的所有内容乘以三,并将这些值存储在第二行中,然后取第二行中存储的值乘以三。并将这些值存储在inStock的第三行中,依此类推。

我了解如何复制gamma,但是在根据上一个列表确定如何递增时遇到了麻烦。

我很难创建一个连续递增inStock的函数。

这就是我所做的。它将gamma中的元素增加三倍并将其存储到inStock的第一行中。但是while循环所做的只是从inStock的第一行获取值并将它们存储到其他行中,而不是连续增加它们。

row = 10
col = 4
gamma = [11, 13, 15, 17]
inStock = [[0] * col] * row

def copyGamma(listG, gamma):
    listG[0] = gamma.copy()
    x = 0

    while x < 9:
        x +=1
        listG[x] = [i * 3 for i in listG[0]]
    return listG

retList = copyGamma(inStock, gamma)
print(retList)
#this is the output of the above code

11      13      15      17 #this is inStock[0]
33      39      45      51 #this is inStock[1]
33      39      45      51 #this is inStock[2]
33      39      45      51
33      39      45      51
33      39      45      51
33      39      45      51
33      39      45      51
33      39      45      51
33      39      45      51


#This is the output i am looking for, format does not matter:

11      13      15      17  #This is inStock[0]

33      39      45      51  #This is inStock[1]

99      117     135     153  #This *should* be inStock[2]

297     351     405     459 #and so on

891     1053    1215    1377

2673    3159    3645    4131

8019    9477    10935   12393

24057   28431   32805   37179

72171   85293   98415   111537

216513  255879  295245  334611 

1 个答案:

答案 0 :(得分:2)

您可以使用列表推导以及以下事实:有效地将每一行的元素乘以3的幂:

inStock = [[x * 3**i for x in gamma] for i in range(row)]