此分配的一部分处理一维列表和二维列表。二维列表有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
答案 0 :(得分:2)
您可以使用列表推导以及以下事实:有效地将每一行的元素乘以3的幂:
inStock = [[x * 3**i for x in gamma] for i in range(row)]