Как сделать автоматическое добавление в комбинированные списки?

Нужна помощь с частью кода переноса сочетания списков 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']

zip

в идеале я хотел сделать так, что б в конечном результате оно показывало Арбуз - 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 коп.']

isinstance

→ Ссылка
Автор решения: 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

→ Ссылка