[] []给出在Python
一个SyntaxError我写了这个代码,但它的第一行给出了一个错误SyntaxError: invalid syntax
:[] []给出在Python
a =[][]
for i in range(3):
for j in range(3):
a[i][j] = i+j
[][]
无效语法。 Python中没有真正的多维数组,只有列表列表。此外,列表不会自动扩展到您抛出的任何索引。您必须通过使用例如append
方法手动扩展它们。
如果你想要一个“二维数组”,首先创建*名单:
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首先学习较为普遍的一个好主意。)
您可以使用以下list comprehensions生成一个5×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]]
像马蒂说,[][]
是不是一个有效的语法,你必须在列表中手动添加到第一个列表。
a = []
for i in range(3):
a.append([])
for j in range(3):
a[i].append(i+j)
如您所知,[]
是空白列表。进一步some_list[i]
访问some_list
索引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)]
关闭这一问题作为题外话,因为你可以在google的语法或读到它在你的榜样'一[我] = []'不起作用。请使用'a.append([])'。另外'a [i] [j] = i + j'应该是'a [i] .append(i + j)' – 2011-05-03 09:39:33
@Rumple:是的,我已经注意到并解决了这个问题。 – sepp2k 2011-05-03 09:40:22
我投票中的一种书 – stackptr 2016-06-25 15:56:10