Форум сайта python.su
Добрый день. Возникла сложность при обработке списков в 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)
Офлайн
Разобрался сам. Нельзя проверять список циклом for и сразу удалять в нем элементы, так как он начинает пропускать, следующий элемент за удаленным
Отредактировано zloy_ej (Авг. 16, 2020 10:09:03)
Офлайн
>>> 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'] >>>
Офлайн
Здравствуйте. Есть один вопрос. Я убрал отступ у remove. Почему remove удаляет folder3? Если после того, как мы отсортировали первым идет Backup,folder 3 же идет последним. Спасибо
Отредактировано PeaceLover (Дек. 26, 2020 15:45:18)
Офлайн
PeaceLoverПотому что ты не один отступ убрал, а два отступа убрал. Там перед remove() два отступа стоят. И каждый отступ значит что-то отдельное.
Я убрал отступ у remove. Почему remove удаляет folder3?
Отредактировано py.user.next (Дек. 26, 2020 18:28:21)
Офлайн