我这个嵌套列表中,内部列表有两个项目,一个名字和一个浮动值。我对铸造产生了好奇,于是用了两种不同的方法来制作列表,如下。
方法1.输出
n = int(input())
lis = [[input() for i in range(2)] for y in range(n)]
for k, v in lis:
v = float(v)
print(lis)
输出。
[['a', '-25.001'], ['b', '-25.0001'], ['c', '-25.000'], ['d', '-25.0']]
方法二:
n = int(input())
lis=[]
for i in range(n):
lis.append([input(),float(input())])
print(lis)
输出
[['a', -25.001], ['b', -25.0001], ['c', -25.0], ['d', -25.0]]
我想要的是方法2的输出,但我想不出为什么第一种方法的输出会产生出一个 ''
围绕浮点数,即使我把它投到了 float
.
是不是因为浮动对象的铸造没有永久工作?
解决方案:
将this:
for k, v in lis:
v = float(v)
改成this:
for i in range(n):
lis[i][1] = float(lis[i][1])
或者,你也可以这样做。
for pair in lis:
pair[1] = float(pair[1])
这样做的原因是 pair
是一个 参考 的子列表,所以在改变 pair
本身不会有任何影响,改变一个 元素 的对改变共享子列表。