列表内涵
myList = [([None] * 8) for x in range(16)]
可以理解这样
mylist = []
for x in range(16):
mylist.append([None] * 8)
所以,你正在创建的16名名单列表,每个包含8 None
秒。但与循环
for i in range(0,7):
for j in range(0,15):
您试图从前7个列表访问15个元素。这就是它失败的原因。相反,你可能想要做
for i in range(16):
for j in range(8):
...
其实你可以做列表理解一样,这样
[[2 * i for j in range(8)] for i in range(16)]
演示:
>>> from pprint import pprint
>>> pprint([[2 * i for j in range(8)] for i in range(16)])
[[0, 0, 0, 0, 0, 0, 0, 0],
[2, 2, 2, 2, 2, 2, 2, 2],
[4, 4, 4, 4, 4, 4, 4, 4],
[6, 6, 6, 6, 6, 6, 6, 6],
[8, 8, 8, 8, 8, 8, 8, 8],
[10, 10, 10, 10, 10, 10, 10, 10],
[12, 12, 12, 12, 12, 12, 12, 12],
[14, 14, 14, 14, 14, 14, 14, 14],
[16, 16, 16, 16, 16, 16, 16, 16],
[18, 18, 18, 18, 18, 18, 18, 18],
[20, 20, 20, 20, 20, 20, 20, 20],
[22, 22, 22, 22, 22, 22, 22, 22],
[24, 24, 24, 24, 24, 24, 24, 24],
[26, 26, 26, 26, 26, 26, 26, 26],
[28, 28, 28, 28, 28, 28, 28, 28],
[30, 30, 30, 30, 30, 30, 30, 30]]
注:我有在range
函数中使用16
和8
,因为它默认情况下为sta rts从0开始迭代直到传递给它的参数-1。因此,分别为0到15和0到8。
只记得范围(a,b)实际上是从a到b-1,而不是a到b。 – jazzz 2015-04-05 05:55:13