首页 > 解决方案 > 如何连续增加二维列表

问题描述

该作业的一部分涉及一维列表和二维列表。二维列表有 10 行,每行有 4 个元素;一维列表有 4 个元素。

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

我了解如何复制gamma,但我无法根据上一个列表确定如何增加。

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

这就是我所做的。它将 gamma 中的元素增加 3 并将它们存储到 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 

标签: python

解决方案


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

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

推荐阅读