метод списка понимание -
my_list[:] = [x[1:3] for x in my_list]
[:]
используется так, что my_list
мутируют в месте, как ваш метод for
.
Demo -
>>> my_list = ['ab1c', 'fo2o', 'ba3r']
>>> my_list[:] = [x[1:3] for x in my_list]
>>> my_list
['b1', 'o2', 'a3']
Как спросили в комментариях -
Вы можете уточнить разницу с my_list = [x[1:3] for x in my_list]
Очень простой пример кода, чтобы показать разницу -
>>> my_list = ['ab1c', 'fo2o', 'ba3r']
>>> a = my_list
>>> my_list = [x[1:3] for x in my_list]
>>> my_list
['b1', 'o2', 'a3']
>>> a
['ab1c', 'fo2o', 'ba3r']
Приведенные выше результаты метода в -
>>> my_list = ['ab1c', 'fo2o', 'ba3r']
>>> a = my_list
>>> my_list[:] = [x[1:3] for x in my_list]
>>> my_list
['b1', 'o2', 'a3']
>>> a
['b1', 'o2', 'a3']
Это потому, что списочные создать новый список, при использовании my_list[:]
на левой стороне оператора присваивания вы просите Python мутировать my_list
на месте (но когда вы делаете my_list = <something>
, вы просто делаете my_list
ссылкой на новый список, вместо того, чтобы мутировать исходный список).
Обратите внимание, что это было бы опереться на 'для i, s в перечислении (my_list): my_list [i] = s [1: 3]'; итерация по 'range (len (...))' обычно считается непитонической. – jonrsharpe
Вы можете использовать как my_list = [i [1: 3] для i в my_list] (или) my_list = map (lambda x: x [1: 3], my_list) – Vineesh