np.array(2**e for e in L) 和 np.array([2**e for e in L])又有和不同?
来源:3-7 Numpy中的矩阵运算
慕数据3541479
2018-03-20
如上。
为什么前者可以这样用?列表推导式不都要加括号么?
写回答
1回答
-
注意:
我刚刚测试了一下,最新版本的numpy.array的构造函数有变化,不再支持使用np.array(2**e for L)的方式生成numpy数组。具体参见这个问答:https://coding.imooc.com/learn/questiondetail/47727.html
以下回答是原回答,解释 2**e for L 和 [2**e for L]的区别。
----------
2**e for e in L 这句话返回的是"生成器"(generator objects);
[2**e for e in L] 返回的是列表(list)。这句话本质是根据一个生成器创造了一个列表。
可以打印出二者的type验证一下:
print(type(i for i in range(100))) print(type([i for i in range(100)]))
np.array(2**e for e in L) 是根据一个迭代器创建了一个numpy的数组;(该方式在最新版本的numpy中已经取消)
np.array([2**e for e in L]) 是根据一个列表创建了一个numpy的数组。
312018-03-21
相似问题