python - 如何连续增加二维列表
问题描述
该作业的一部分涉及一维列表和二维列表。二维列表有 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
解决方案
您可以使用列表推导以及每一行的元素有效地乘以 3 的幂这一事实:
inStock = [[x * 3**i for x in gamma] for i in range(row)]
推荐阅读
- python - 我如何在 BeautifulSoup 类中获取文本
- docker - ECS 通过环境变量设置端口映射
- c# - 验证 SignalR Hub 和调用外部类函数的能力
- c# - 将 JSON 反序列化为 c# 模型
- android - 哪些浏览器支持意图方案 URL ("intent:mydata1#Intent;action=myaction1;type=text/plain;end";)
- node.js - Jhipster 生成前端网关 NPM lint 测试错误
- typescript - PrimeNG 中的样式复选框
- slack - 通过 API 将多个文件发送到 Slack
- java - 使用目标时的Android毕加索回调
- php - 如何从嵌入式谷歌地图 html 代码中仅获取或提取 ID 字符串部分?