“[float(n)-50 for n in range(100)]” - 这是做什么的?

时间:2012-05-05 16:25:09

标签: python

我偶然发现了这个单行:

[float(n)-50 for n in range(100)]

有人可以告诉我它的作用吗?它应该为向量返回一个浮点值。

最佳, 的Marius

3 个答案:

答案 0 :(得分:5)

这是一个list comprehension,其内容为“创建一个包含100个元素的列表,这样,对于索引为n的每个元素,将该元素设置为n-50”。

答案 1 :(得分:2)

这是list comprehension

  

列表推导提供了创建列表的简明方法。共同   应用程序将创建新列表,其中每个元素都是结果   一些操作应用于另一个序列的每个成员或   可迭代的,或创建满足a的元素的子序列   某种条件。

     

例如,假设我们要创建一个正方形列表,例如:

>>> squares = []
>>> for x in range(10):
...     squares.append(x**2)
...
>>> squares 
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
     

我们可以通过以下方式获得相同的结果:

squares = [x**2 for x in range(10)]
     

这也相当于squares = map(lambda x: x**2, range(10)),   但它更简洁,更易读。

答案 2 :(得分:2)

它的含义与:

相同
[float(x) for x in range(-50, 50)]

或(至少在Python 2中):

map(float, range(-50, 50))
如果您知道列表推导或map函数如何工作,那么

是不言自明的:它们将整数范围-50...50转换为浮点数列表(上面的50是独占的)。结果是列表:

[-50.0, -49.0 ... 49.0]