Как отфильтровать список по количеству букв в слове
У меня есть класс Product:
class Product():
def __init__(self, id, category, name, srok_godnosti, volume, ves, price):
self.id = int(id) #уникальный идентификатор
self.category = str(category) #категория
self.name = str(name) #имя
self.godnost = int(srok_godnosti) #сколько дней может выдержать не портясь
self.volume = int(volume) #объём в миллилитрах
self.ves = int(ves) #вес в граммах
self.price = int(price) #цена
и есть продукты:
milk = Product(124356, "Products", "Milk", 7, 1500, False, 67)
sugar = Product(309475, "Products", "Sugar", 365, False, 750, 72)
chips = Product(263849, "Products", "Chips", 128, False, 150, 103)
butter = Product(786582, "Products", "Butter", 31, False, 450, 327)
lemon = Product(283444, "Products", "Lemon", 36, False, 40, 17)
print(f"Имя : {milk.name}, ID : {milk.id}, категория: {milk.category}, в нормальных условиях может выдержать не портясь : {milk.godnost} дней, объём : {milk.volume} милилитов, вес : {milk.ves} грамм, цена : {milk.price} рублей.")
print(" ")
print(f"Имя : {sugar.name}, ID : {sugar.id}, категория: {sugar.category}, в нормальных условиях может выдержать не портясь : {sugar.godnost} дней, объём : {sugar.volume} милилитов, вес : {sugar.ves} грамм, цена : {sugar.price} рублей.")
print(" ")
print(f"Имя : {chips.name}, ID : {chips.id}, категория: {chips.category}, в нормальных условиях может выдержать не портясь : {chips.godnost} дней, объём : {chips.volume} милилитов, вес : {chips.ves} грамм, цена : {chips.price} рублей.")
print(" ")
print(f"Имя : {butter.name}, ID : {butter.id}, категория: {butter.category}, в нормальных условиях может выдержать не портясь : {butter.godnost} дней, объём : {butter.volume} милилитов, вес : {butter.ves} грамм, цена : {butter.price} рублей.")
print(" ")
print(f"Имя : {lemon.name}, ID : {lemon.id}, категория: {lemon.category}, в нормальных условиях может выдержать не портясь : {lemon.godnost} дней, объём : {lemon.volume} милилитов, вес : {lemon.ves} грамм, цена : {lemon.price} рублей.")
Мне нужно отфильтровать список по длине названия товара(где длина названия больше пяти) и вывести названия продуктов получившегося списка на экран. То есть из 5 продуктов должны вывести на экран имена продуктов где букв больше 5, а остальное убрать. При выводе должно получиться:
Список продуктов : Sugar, Chips, butter, lemon.
А milk исчезнет из списка, т. к. в milk 4 буквы. Помогите, пожалуйста, как это сделать?
Ответы (1 шт):
Список продуктов изначально:
spisok_produktov = [sugar, chips, butter, lemon, milk]
Нужно дописать:
print(*(f"Имя: {x.name}, вес:{x.ves} грамм, цена: {x.price} рублей." for x in spisok_produktov if len(x.name) > 5), sep='\n')
x - переменная в списке. len - длинна. len(x.name) > 5 - длина имени переменной x больше 5.
Вывод такой:
Имя: Butter, вес: 450 грамм, цена: 327 рублей.
т.к. в butter 6 букв.
Если вместо > сделать >= (больше или равно), то вывод будет таким:
Имя: Sugar, вес: 750 грамм, цена: 72 рублей.
Имя: Chips, вес: 150 грамм, цена: 103 рублей.
Имя: Butter, вес: 450 грамм, цена: 327 рублей.
Имя: Lemon, вес: 40 грамм, цена: 17 рублей.
Слово milk удаляется, ведь в нем 4 буквы
Спасибо Сергею Ш!