Понимание списка против цикла — чего я не понимаю?

#python #list-comprehension

#питон #список-понимание

Вопрос:

Я немного сбит с толку, почему мое понимание списка работает, но не мой цикл.

Может кто — нибудь объяснить, чего мне здесь не хватает?

 sales = ['$1.21', '$7.29', '$12.52', '$5.13', '$20.39', '$30.82', '$1.85', '$17.98'] # When for-loop loop_sales =[] for sale in sales:  sale.strip("$")  loop_sales.append(sale) print(loop_sales)  

Выход: [‘$1.21’, ‘$7.29’, ‘$12.52’, ‘$5.13’, ‘$20.39’, ‘$30.82’, ‘$1.85’, ‘$17.98’]

  # When list comprehension list_sales = [sale.strip("$") for sale in sales] print(list_sales)  

Выход: [‘1.21’, ‘7.29’, ‘12.52’, ‘5.13’, ‘20.39’, ‘30.82’, ‘1.85’, ‘17.98’]

Ответ №1:

strip метод просто возвращает новое значение (которое на самом деле является обработанным выводом), он вообще не изменяет sale переменную здесь. Чтобы это сработало, попробуйте sale = sale.strip("$") вместо sale.strip("$") обычного кода цикла for или просто используйте loop_sales.append(sale.strip('$')) , как сказал Талха Тайяб в своем ответе

Ответ №2:

Попробуйте это:

 sales = ['$1.21', '$7.29', '$12.52', '$5.13', '$20.39', '$30.82', '$1.85', '$17.98'] # When for-loop loop_sales =[] for sale in sales:  loop_sales.append(sale.strip("$")) print(loop_sales) #output ['1.21', '7.29', '12.52', '5.13', '20.39', '30.82', '1.85', '17.98']  

Ответ №3:

Как метод, strip не изменяет саму строку, он просто возвращает урезанную версию строки. Таким образом, вы можете подойти к этому двумя способами. Либо сохраните возвращенную строку в качестве переменной и добавьте эту переменную, либо добавьте sales.strip($)

вот так: версия 1 (сохранение в качестве переменной):

 sales = ['$1.21', '$7.29', '$12.52', '$5.13', '$20.39', '$30.82', '$1.85', '$17.98'] # When for-loop loop_sales =[] for sale in sales:  a= sale.strip("$")  loop_sales.append(a) print(loop_sales)  

или версия 2:

 sales = ['$1.21', '$7.29', '$12.52', '$5.13', '$20.39', '$30.82', '$1.85', '$17.98'] # When for-loop loop_sales =[] for sale in sales:  loop_sales.append(sale.strip("$")) print(loop_sales)  

Все это зависит от того, будете ли вы использовать переменную позже в коде, но я думаю, что вторая версия лучше, если нет.

Ответ №4:

strip не изменяет строку, она возвращает разделенную строку.

Ответ №5:

введите описание изображения здесь

 loop_sales =[] for sale in sales:  loop_sales.append(sale.strip("$")) print(loop_sales)  

Комментарии:

1. вставить код в блок кода будет лучше, или код может свернуться в один комок