【发布时间】:2014-09-17 18:00:22
【问题描述】:
在尝试选择 2D 4x4 数组中的第一列(从零开始计数时)时,我编写了以下脚本:
import numpy
a4x4=[list(range(4*i,4*(i+1))) for i in list(range(4))]
print(a4x4)
print(a4x4[:,1])
数组好像没问题:
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]]
但不是
[1, 5, 9, 13]
对于第二次打印,我收到此错误:
TypeError:列表索引必须是整数,而不是元组
为什么会出现这个错误,是怎么回事?
【问题讨论】:
-
附带说明,您不需要那些额外的
list电话。for i in list(range(4))将为您提供与for i in range(4)完全相同的结果,除了它会浪费时间和内存来构建一个与您已有的范围具有相同元素的列表。 -
啊,谢谢。我记得 list() 是尝试打印该范围的残余。
-
只是确保。很多人不明白 Python 是围绕泛型迭代构建的,列表并没有什么特别之处。范围、字符串、文件等内容同样是可迭代的。 (另一方面,Numpy不是围绕迭代构建的,而是围绕一次对整个数组或切片的强制转换操作构建的。)
标签: python arrays integer tuples