尝试以下代码后,我有疑问。我希望代码可以打印1 2 3,但是此代码可以打印1.1、2.2、3.3。谁能解释为什么它适合初学者?
list1=[1.1,2.2,3.3]
for i in list1:
i=int(i)
for i in list1:
print(i)
为什么要打印此代码
1.1
2.2
3.3
但不是
1
2
3
?
答案 0 :(得分:1)
在此循环中:
for i in list1:
i=int(i)
在循环中更改i
对列表无效。在每次循环迭代中,将i
设置为list1
的下一个元素。您可以为其分配所需的任何内容,而不会影响列表。没什么不同:
i = list1[ix]
i = 123
出于完全相同的原因,这显然不会影响list1
。
如果要更改列表,可以执行以下操作:
for i in range(len(list1)):
list1[i] = int(list1[i])
这将修改list1
的元素。
另一种方法是:
list1 = [int(i) for i in list1]
这不会修改list1
引用的列表,但会创建一个 new 列表,然后将其分配给list1
。对旧list
的任何其他引用将保持不变,但list1
现在将引用包含更改后值的新列表。