[]给出Python中的语法错误

[]给出Python中的语法错误,python,Python,我编写了这段代码,但它在第一行给出了一个错误SyntaxError:无效语法: a =[][] for i in range(3): for j in range(3): a[i][j] = i+j []不是有效的语法。Python中没有真正的多维数组,只有列表列表。此外,列表不会自动扩展到您向其抛出的任何索引。您必须使用appendmethod手动展开它们 如果需要二维数组,请首先创建顶级列表: a = [] 然后在循环中向其添加子列表 for i in range

我编写了这段代码,但它在第一行给出了一个错误SyntaxError:无效语法:

a =[][]
for i in range(3):
    for j in range(3):
        a[i][j] = i+j
[]不是有效的语法。Python中没有真正的多维数组,只有列表列表。此外,列表不会自动扩展到您向其抛出的任何索引。您必须使用appendmethod手动展开它们

如果需要二维数组,请首先创建顶级列表:

a = []
然后在循环中向其添加子列表

for i in range(3):
    row = []
    a.append(row)
    for j in range(3):
        row.append(i+j)
有更简洁的方法来初始化这样的列表结构,但这种方法更接近您的代码

如果要将列表快速初始化为特定大小,可以在列表上使用*运算符:

>>> [0] * 5
[0, 0, 0, 0, 0]
如果您使用比数字或字符串更复杂的类型作为项目,请小心;您可能会得到一个列表,其中所有元素实际上都是对同一对象的引用

在有人指出有些软件包提供多维数组(如numpy)之前,我认为OP最好先学习更多的常用类型。

您可以使用以下方法生成一个5 x 5维数组

>>> array = [ [i+j for j in range(5)] for i in range(5)]
>>> array
[[0, 1, 2, 3, 4], [1, 2, 3, 4, 5], [2, 3, 4, 5, 6], [3, 4, 5, 6, 7], [4, 5, 6, 7, 8]]
正如Matti所说,[]不是有效的语法,您必须手动将列表添加到第一个列表中

a = []

for i in range(3):
    a.append([])
    for j in range(3):
        a[i].append(i+j)
如您所知,[]是空列表。此外,一些_列表[i]访问索引i处的一些_列表。因此,当python看到[][]时,它首先看到空列表,然后是一个左括号。然后,它假设您想要访问空列表,并且需要一个索引或切片。当它遇到右括号时,这是意外的,会导致语法错误

要创建包含列表的列表,可以执行[[]、[]、[]操作,这是一个包含三个空列表的列表。但是,由于您使用的是循环,因此您更希望在循环中填充数组,如下所示:

a =[]
for i in range(3):
    a.append( [] )
    for j in range(3):
        a[i].append( i+j )
a = [[i+j for j in range(3)] for i in range(3)]
然而,这仍然不是你真正想要做的,那太冗长了。您应该做的是使用如下列表:

a =[]
for i in range(3):
    a.append( [] )
    for j in range(3):
        a[i].append( i+j )
a = [[i+j for j in range(3)] for i in range(3)]

在您的示例中,[i]=[]将不起作用。请使用a.append[]。此外,a[i][j]=i+j应该是a[i]。附录i+j@Rumple:是的,我已经注意到并解决了这个问题。我投票将这个问题作为离题题来结束,因为你可以用谷歌搜索语法或在书中读到它