Python大爷,救我

jamesyue 2021-03-10 06:47:19
我想对三维列表初始化,但老是报错:list index out of range

def bal_sheet():
w = []
for i in range(100):
for j in range(100):
for k in range(8):
w[i][j][k].append(0)

请问怎么才能初始化? 列表数据较多,又是三维,所以不可能手工罗列
...全文
166 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
魔芋红茶 2021-03-13
  • 打赏
  • 举报
回复
你这是C++的写法,而且还没先指定数组范围,Python就不能这样初始化 w = [] for i in range(100): a = [] for j in range(100): a.append([0]*8) w.append(a) print(w)
weixin_45903952 2021-03-12
  • 打赏
  • 举报
回复
引用 3 楼 jamesyue 的回复:
发现,下面两种初始化都可以,但第一种在循环体内修改后,出了循环后还原为0. w = [[[0]*2]*85]*8 这第二种方法,循环修改值后,出了循环是可以保存的。 w = [[[0 for i in range(3)] for j in range(85)] for _ in range(8)] 奇怪,请帮解释一下
看一下数据的深拷贝、浅拷贝
jamesyue 2021-03-11
  • 打赏
  • 举报
回复
发现,下面两种初始化都可以,但第一种在循环体内修改后,出了循环后还原为0.
w = [[[0]*2]*85]*8

这第二种方法,循环修改值后,出了循环是可以保存的。
w = [[[0 for i in range(3)] for j in range(85)] for _ in range(8)]

奇怪,请帮解释一下
weixin_45903952 2021-03-10
  • 打赏
  • 举报
回复
w=[[[0 for i in range(3)] for j in range(3)] for _ in range(3)] print(w) 是这意思?可以试试调整3来设置各层个数
_Raymond_ 2021-03-10
  • 打赏
  • 举报
回复
推荐先用numpy生成3维张量,初始化之后,在转换为3维数组。

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧