Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python [浮动(i)表示lst中的i]_Python_Python 3.x - Fatal编程技术网

Python [浮动(i)表示lst中的i]

Python [浮动(i)表示lst中的i],python,python-3.x,Python,Python 3.x,Prorgaming新手——我在寻找我正在做的一个练习的答案,并从中得到了答案。我的问题是,从那个线索中,被选为最佳答案的,是这个代码吗 [float(i) for i in lst] 代码做了它应该做的,但是当我尝试进入新列表时,我得到了错误 >>> xs = '12 10 32 3 66 17 42 99 20'.split() >>> [float(i) for i in xs] [12.0, 10.0, 32.0, 3.0, 66.0, 17.0,

Prorgaming新手——我在寻找我正在做的一个练习的答案,并从中得到了答案。我的问题是,从那个线索中,被选为最佳答案的,是这个代码吗

[float(i) for i in lst]
代码做了它应该做的,但是当我尝试进入新列表时,我得到了错误

>>> xs = '12 10 32 3 66 17 42 99 20'.split()
>>> [float(i) for i in xs]
[12.0, 10.0, 32.0, 3.0, 66.0, 17.0, 42.0, 99.0, 20.0]
>>> i
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'i' is not defined  
xs='12103263617429920'.split() >>>[浮动(i)表示xs中的i] [12.0, 10.0, 32.0, 3.0, 66.0, 17.0, 42.0, 99.0, 20.0] >>>我 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 名称错误:未定义名称“i” 我该怎么做


谢谢

您必须将
[float(i)for i in xs]
分配给以下内容:

>>> new_list = [float(i) for i in xs]
>>> new_list
[12.0, 10.0, 32.0, 3.0, 66.0, 17.0, 42.0, 99.0, 20.0]
>>> new_list[0]
12.0
>>> new_list[5]
17.0

i
仅存在于列表中

你想说:

i = [float(i) for i in lst]

与将最后一次迭代绑定到变量的循环不同,列表comp中的var在求值后停止存在。

使用map:

xs = '12 10 32 3 66 17 42 99 20'.split()
new_xs = map(float, xs)

这与Python版本有关。看: 在Python 2上,如果执行以下操作:

>>> i = 1234
>>> j = [i for i in xrange(10)]
>>> print i
9
但这在Python 3中是固定的:

>>> i = 1234
>>> j = [i for i in range(10)]
>>> print(i)
1234

如果您使用的是Python 3.0或更高版本,那么该变量将仅在应用程序中可用。它不会影响环境的其余部分

作为将名称分配给列表理解的替代方法,在Python交互模式下,符号将自动分配给解释器计算的最后一个表达式。因此,您可以执行以下操作:

>>> xs = '12 10 32 3 66 17 42 99 20'.split()
>>> [float(i) for i in xs]
[12.0, 10.0, 32.0, 3.0, 66.0, 17.0, 42.0, 99.0, 20.0]
>>> _
[12.0, 10.0, 32.0, 3.0, 66.0, 17.0, 42.0, 99.0, 20.0]
>>> _[2]
32.0
>>> _
32.0

i
用作列表理解内外的变量可能会导致不必要的混淆。或者,您真正想说的可能是
floatlist=[..
,因为以迭代器命名列表有点混乱。为了完整性起见,
i
在Python 3中只存在于列表理解内部。在Python 2中,您可以在外部访问
i
。每当Python提示符打印出某个内容时,这是因为您刚才键入的内容都返回了一个值。您可以通过assi保留该值将一个变量输入到您键入的表达式中,但不会输出任何内容。使用肯定是实现这一点的最简洁的方法。