Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 16, 2020 05:54:07

zloy_ej
Зарегистрирован: 2019-01-04
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа со списками

Добрый день. Возникла сложность при обработке списков в Python3.

oldest_zip = ['folder.zip', 'folder3.zip', 'folder2.zip', 'Backup_2020-08-15.zip']
print('так выглядит список, перед удалением без Backup', oldest_zip)
oldest_zip.sort()
print('Так выглядит после сортировки', oldest_zip)
for a in oldest_zip:
print(a[0:6])
if a[0:6]=="Backup":
print("Начинается с Backup", a)
else:
print('На удаление получили', a)
oldest_zip.remove(a)
print(oldest_zip)
А вот такой результат работы скрипта:
так выглядит список, перед удалением без Backup
Так выглядит после сортировки
Backup
Начинается с Backup Backup_2020-08-15.zip
folder
На удаление получили folder.zip
folder
На удаление получили folder3.zip


Process finished with exit code 0
Почему остается folder2.zip?

Офлайн

#2 Авг. 16, 2020 10:07:17

zloy_ej
Зарегистрирован: 2019-01-04
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа со списками

Разобрался сам. Нельзя проверять список циклом for и сразу удалять в нем элементы, так как он начинает пропускать, следующий элемент за удаленным

Отредактировано zloy_ej (Авг. 16, 2020 10:09:03)

Офлайн

#3 Авг. 16, 2020 10:36:24

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9882
Репутация: +  853  -
Профиль   Отправить e-mail  

Работа со списками

  
>>> oldest_zip = ['folder.zip', 'folder3.zip', 'folder2.zip', 'Backup_2020-08-15.zip']
>>> 
>>> out = list(filter(lambda i: i.startswith('Backup'), oldest_zip))
>>> out
['Backup_2020-08-15.zip']
>>> 

  
>>> oldest_zip = ['folder.zip', 'folder3.zip', 'folder2.zip', 'Backup_2020-08-15.zip']
>>> 
>>> out = [i for i in oldest_zip if i.startswith('Backup')]
>>> out
['Backup_2020-08-15.zip']
>>>



Офлайн

#4 Дек. 26, 2020 15:40:53

PeaceLover
Зарегистрирован: 2020-12-26
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа со списками

Здравствуйте. Есть один вопрос. Я убрал отступ у remove. Почему remove удаляет folder3? Если после того, как мы отсортировали первым идет Backup,folder 3 же идет последним. Спасибо

Отредактировано PeaceLover (Дек. 26, 2020 15:45:18)

Офлайн

#5 Дек. 26, 2020 18:27:36

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9882
Репутация: +  853  -
Профиль   Отправить e-mail  

Работа со списками

PeaceLover
Я убрал отступ у remove. Почему remove удаляет folder3?
Потому что ты не один отступ убрал, а два отступа убрал. Там перед remove() два отступа стоят. И каждый отступ значит что-то отдельное.



Отредактировано py.user.next (Дек. 26, 2020 18:28:21)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version