关于类型转换的基本python问题

时间:2020-05-01 10:56:40

标签: python types

尝试以下代码后,我有疑问。我希望代码可以打印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
?

1 个答案:

答案 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现在将引用包含更改后值的新列表。

相关问题