【发布时间】:2017-07-11 14:05:26
【问题描述】:
我对在 python 中使用嵌套单行 for 循环有疑问。特别是,我有以下几点:
A = [[tmp1[a][b] / tmp2[a] for b in range(0,10)] for a in range(0,20)]
根据Here,单行for循环等价于
for a in range(0,20):
for b in range (0, 10):
A.append(tmp1[a][b] / tmp2[a])
但是,python 给了我以下错误:
AttributeError: 'numpy.ndarray' 对象没有属性'append'。
我应该如何修改结构,以便使用双循环而不是单行嵌套循环?
更新:
A=[]
for a in range(0,20):
B = []
for b in range (0, 10):
B.append(tmp1[a][b] / tmp2[a])
A.append(B)
【问题讨论】:
-
您没有正确初始化
A...您忘记了A = []部分。 -
不是单行
for循环;这是一个列表理解。他们都只是使用相同的关键字。 -
追加用于原生
list -
您混淆了两行非常相似的代码 - 第一行构建列表列表,第二行构建单个列表:
A = [[tmp1[a][b] / tmp2[a] for b in range(0,10)] for a in range(0,20)]与A = [tmp1[a][b] / tmp2[a] for b in range(0,10) for a in range(0,20)]不同 -
@wrek :是的,你的更新是正确的