элементарный python вопрос о преобразовании типов - PullRequest
0 голосов
/ 01 мая 2020

У меня есть вопрос после попытки кода ниже. Я ожидал, что код напечатает 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 Ответ

1 голос
/ 01 мая 2020

В этом l oop:

for i in list1:
    i=int(i)

Изменение i в l oop не влияет на список. На каждой итерации l oop для 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, но вместо этого он создает новый список, а затем присваивает его list1. Любые другие ссылки на старый list останутся без изменений, но list1 теперь будет ссылаться на новый список, который содержит измененные значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...