np.array(2**e for e in L) 和 np.array([2**e for e in L])又有和不同?

来源:3-7 Numpy中的矩阵运算

慕数据3541479

2018-03-20

如上。

为什么前者可以这样用?列表推导式不都要加括号么?

写回答

1回答

liuyubobobo

2018-03-21

注意:

我刚刚测试了一下,最新版本的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的数组。

3
1
慕数据3541479
谢谢谢谢谢老师!!!
2018-03-21
共1条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5839 学习 · 2437 问题

查看课程