Найти - Пользователи
Полная версия: Работа со списками
Начало » Python для новичков » Работа со списками
1
zloy_ej
Добрый день. Возникла сложность при обработке списков в 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?
zloy_ej
Разобрался сам. Нельзя проверять список циклом for и сразу удалять в нем элементы, так как он начинает пропускать, следующий элемент за удаленным
py.user.next
  
>>> 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']
>>>
PeaceLover
Здравствуйте. Есть один вопрос. Я убрал отступ у remove. Почему remove удаляет folder3? Если после того, как мы отсортировали первым идет Backup,folder 3 же идет последним. Спасибо
py.user.next
PeaceLover
Я убрал отступ у remove. Почему remove удаляет folder3?
Потому что ты не один отступ убрал, а два отступа убрал. Там перед remove() два отступа стоят. И каждый отступ значит что-то отдельное.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB