Python不使用额外库初始化全零2D列表出现SyntaxError如何解决
错误原因
你编写的代码存在语法结构错误,不符合Python列表推导式的编写规则:
原代码中你直接将内层生成列表的推导式写在了外层range(amount + 1)的方括号后,相当于尝试给range生成的可迭代对象传入一个列表推导式作为索引,这是完全非法的语法结构,因此运行直接抛出SyntaxError。
正确实现方式
如果你需要生成行数为amount + 1、列数为len(coins)的全零二维列表,使用嵌套列表推导式的正确写法如下:
table = [[0 for _ in range(len(coins))] for _ in range(amount + 1)]
注意避坑
不要使用如下写法初始化:
# 错误写法:所有行指向同一个列表引用,修改任意一行的元素会同步修改所有行 table = [[0]*len(coins)] * (amount + 1)
这种写法生成的二维列表中每一行都是同一个列表对象的浅拷贝,一旦修改某一行的元素,所有行的对应位置都会同步变化,不符合常规的二维列表使用需求。
内容的提问来源于stack exchange,提问作者CodeBhiErrorBhi
相关产品推荐
相关产品推荐

