[lst中的每个i转换为浮点数]

2 投票
6 回答
4918 浏览
提问于 2025-04-16 17:41

我是编程新手——我在做一个练习时寻找答案,结果在这里找到了答案。我的问题是——在那个讨论中,被选为最佳答案的代码是这样的:

[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  

我该怎么做呢?

谢谢!

6 个回答

1

跟普通的for循环不同,普通的for循环在最后一次循环结束后,循环中用的变量会保留它的值。而在列表推导式中,使用的变量在计算完后就不再存在了。

3

使用 map 函数:

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

你需要把 [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

撰写回答