Как сделать автоматическое добавление в комбинированные списки?
Нужна помощь с частью кода переноса сочетания списков prices и items в список menu (как в примере). Буду очень благодарен за помощь
items = ["Arbuz = ", "Yabloko = ", "Morkovka = ", "Grusha = "] # товар
prices = [120.43, 10, 23.56, 92.41] #цена
menu = [] # комбо цены и товар. (Пример - Arbuz = 120.43)
size = (len(prices))
combo = " "
for combo in range(size):
combo = items[0:size] + prices[0:size] # попытки запихнуть prices + items в menu
menu.append(combo)
def adder(item, price):
items.append(item) # Добавление товара
prices.append(price)
adder("Moloko = ", 200)
print(menu)
Ответы (3 шт):
Автор решения: Violet
→ Ссылка
items = ["Arbuz", "Yabloko", "Morkovka", "Grusha"]
prices = [120.43, 10, 23.56, 92.41]
menu = []
for x, y in zip(items, prices):
menu.append(f'{x} = {y}')
print('menu', menu)
>>> menu ['Arbuz = 120.43', 'Yabloko = 10', 'Morkovka = 23.56', 'Grusha = 92.41']
def add(item, price, menu_1):
menu_1.append(f'{item} = {price}')
return menu_1
print('add', add('salad', 234, menu))
>>> menu ['Arbuz = 120.43', 'Yabloko = 10', 'Morkovka = 23.56', 'Grusha = 92.41']
add ['Arbuz = 120.43', 'Yabloko = 10', 'Morkovka = 23.56', 'Grusha = 92.41', 'salad = 234']
в идеале я хотел сделать так, что б в конечном результате оно показывало Арбуз - 120 рублей 43 копейки , Яблоко - 10 рублей и т.д.
items = ["Arbuz", "Yabloko", "Morkovka", "Grusha"]
prices = [120.43, 10, 23.56, 92.41]
menu = []
for x, y in zip(items, prices):
if isinstance(y, int):
menu.append(f'{x} = {y} руб.')
elif isinstance(y, float):
menu.append(f'{x} = {str(y).split(".")[0]} руб. {str(y).split(".")[1]} коп.')
print('menu', menu)
>>> menu ['Arbuz = 120 руб. 43 коп.', 'Yabloko = 10 руб.', 'Morkovka = 23 руб. 56 коп.', 'Grusha = 92 руб. 41 коп.']
Автор решения: Andy Pavlov
→ Ссылка
Можно объединить исходные списки через zip() в список меню, а потом к нему добавлять пункты меню.
items = ["Arbuz = ", "Yabloko = ", "Morkovka = ", "Grusha = "]
prices = [120.43, 10, 23.56, 92.41]
menu = list(zip(items, prices))
def adder(combo: list, item: str, price: float):
menu.append(tuple([item, price]))
adder(menu, "Moloko = ", 200)
print(menu)
Но вообще лучше сделать либо через словарь, либо заморочиться с классом. Ниже вариант через словарь:
menu = {i: p for i, p in zip(items, prices)}
menu["Moloko"] = 200.0
menu["Sok"] = 15.0
print(menu) # {'Arbuz': 120.43, 'Yabloko': 10, 'Morkovka': 23.56, 'Grusha': 92.41, 'Moloko': 200.0, 'Sok': 15.0}
Автор решения: Argo7
→ Ссылка
c = []
for i in range(len(items)):
c.append(items[i] + str(prices[i]))
print(c)
Неизящный императивный способ без zip