[lst中的每个i转换为浮点数]
我是编程新手——我在做一个练习时寻找答案,结果在这里找到了答案。我的问题是——在那个讨论中,被选为最佳答案的代码是这样的:
[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