请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

如上。

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

正在回答

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的数组。

3 回复 有任何疑惑可以回复我~
  • 提问者 慕数据3541479 #1
    谢谢谢谢谢老师!!!
    回复 有任何疑惑可以回复我~ 2018-03-21 09:25:21
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信