Как поменять значения в списке, не создавая новый список?
📁 python, работа
Стандартный способ через списковое включение (list comprehension):
my_list=[1,2,3,4,5,6]my_list_1=[i*5 for i in my_list]print(my_list_1)Почему не могу сделать также с исходным списком:
my_list=[1,2,3,4,5,6]for i in my_list: i*=5print(my_list)Этот код не работает, почему?
Для данной конструкции:
for i in my_list: i*=5Python создает новую переменную i в которую попадают последовательно значения из списка. В итоге вы меняете значения переменной i, список остается неизменным.
In [136]: my_list=[1,2,3,4,5,6] ...: for i in my_list: ...: i*=5 ...: print(i, my_list) ...:5 [1, 2, 3, 4, 5, 6]10 [1, 2, 3, 4, 5, 6]15 [1, 2, 3, 4, 5, 6]20 [1, 2, 3, 4, 5, 6]25 [1, 2, 3, 4, 5, 6]30 [1, 2, 3, 4, 5, 6]В следующей строке кода вы присваиваете переменной my_list_1 результат работы list comprehension (список):
my_list_1=[i*5 for i in my_list]Решение:
my_list[:] = [i*5 for i in my_list]print(my_list)#[5, 10, 15, 20, 25, 30]PS подробнее о присвоениях спискам и срезах можно прочитать в
Войдите чтобы оставить ответ