我正在尝试将列表列表中的所有元素转换为浮动但是当我在下面的第一个循环中执行它然后打印它们的类型时,它们的类型保持原始类型。
for x in f:
for a in x:
a = float(a)
for x in f:
for a in x:
print(type(a),a)
我不知道
<class 'numpy.str_'> 0.0
<class 'float'> 0.0
<class 'float'> 1.0
<class 'float'> nan
<class 'numpy.float64'> 0.3
第一个循环不应该改变元素的类型吗?
答案 0 :(得分:1)
for x in f:
for a in x:
a = float(a)
这不会像您期望的那样更新列表中的元素。您只需将a
分配给新变量即可。
有很多方法可以做到这一点,但一种方法是重新创建列表。这是一个简单的例子
a = [ "1", "2", "3" ]
a = [ float(x) for x in a ]
print(a) # Yield [1.0, 2.0, 3.0]
另一种方法是直接更新列表中的项目
for index, a in enumerate(x):
x[index] = float(a)