为什么这些列表没有得到修改?

2024-06-16 14:40:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个分数列表:

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]

问题在哪里?如何解决


Tags: 代码in列表for分数printlstround
1条回答
网友
1楼 · 发布于 2024-06-16 14:40:28

在您的代码中,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)

相关问题 更多 >