为什么这些列表没有被修改?
Why these lists are not getting modified?
我有 2 个带分数的列表:
lst1 = [.2568123, .3589123]
lst2 = [.5689123, .6547123]
我想在一个代码块中将它们全部四舍五入。所以我尝试了:
for lst in [lst1, lst2]:
lst = [round(x,1) for x in lst]
我现在检查清单:
print(lst1, lst2)
但是,我发现列表仍然包含相同的值,而不是四舍五入的值:
[0.2568123, 0.3589123] [0.5689123, 0.6547123]
问题出在哪里,如何解决?
在您的代码中,lst 在两点具有相同的名称,但是,它们是不同的(身份不同)。您可以通过
进行检查
lst1 = [.2568123, .3589123]
lst2 = [.5689123, .6547123]
for lst in [lst1, lst2]:
print(id(lst)) #a
lst = [round(x,1) for x in lst]
print(id(lst)) #b a!=b
你可以试试这个,
lst1 = [.2568123, .3589123]
lst2 = [.5689123, .6547123]
for lst in lst1,lst2:
for x,y in enumerate(lst):lst[x]=round(y,1)
print(lst1,lst2)
我有 2 个带分数的列表:
lst1 = [.2568123, .3589123]
lst2 = [.5689123, .6547123]
我想在一个代码块中将它们全部四舍五入。所以我尝试了:
for lst in [lst1, lst2]:
lst = [round(x,1) for x in lst]
我现在检查清单:
print(lst1, lst2)
但是,我发现列表仍然包含相同的值,而不是四舍五入的值:
[0.2568123, 0.3589123] [0.5689123, 0.6547123]
问题出在哪里,如何解决?
在您的代码中,lst 在两点具有相同的名称,但是,它们是不同的(身份不同)。您可以通过
进行检查lst1 = [.2568123, .3589123]
lst2 = [.5689123, .6547123]
for lst in [lst1, lst2]:
print(id(lst)) #a
lst = [round(x,1) for x in lst]
print(id(lst)) #b a!=b
你可以试试这个,
lst1 = [.2568123, .3589123]
lst2 = [.5689123, .6547123]
for lst in lst1,lst2:
for x,y in enumerate(lst):lst[x]=round(y,1)
print(lst1,lst2)