Сравнение двух списков

#python #python-3.x #list

#python #python-3.x #Список

Вопрос:

У меня есть два списка. Первый список описывает количество элементов в 1 полном наборе. Второй список содержит текущий инвентарь. Мой вопрос заключается в следующем: как я могу рассчитать, сколько возможных наборов может быть создано с текущим инвентарем?

 a = [1, 1, 2]  # This equals 1 complete set
b = [9, 12, 19]  # This is the inventory
 
# output should be: sets = 9
  

Комментарии:

1. "diamond earrings" * 2 делает не то, что вы думаете. Попробуйте распечатать список, чтобы увидеть, что вы получаете.

2. Вы понимаете, что ["diamond necklace" * 9] дает вам ['diamond necklacediamond necklacediamond necklacediamond necklacediamond necklacediamond necklacediamond necklacediamond necklacediamond necklace'] , то есть один элемент с фразой, повторяющейся 9 раз, а не 9 элементов?

3.Игнорируйте строку. a = [1, 1, 2] b = [9, 12, 19]

4. Будет ли это соответствовать вашему условию min(x // y для x, y в zip (b, a))

Ответ №1:

Вы можете взять минимальную сумму в инвентаре, разделенную на сумму, необходимую для набора каждого типа товара.

 min(inventory // required for inventory, required in zip(b, a))
  

Комментарии:

1. Я поделился этим в комментарии.

Ответ №2:

Преобразуйте список в список кортежей, чтобы облегчить работу с

 tuple_set = [("diamond necklace", 1), ("diamond ring", 1), ("diamond earrings", 2)]
tuple_inventory = [("diamond necklace", 9), ("diamond ring", 12), ("diamond earrings", 19)]

# put a big number
max_sets = 10000
for inventory in tuple_inventory:
    for item in tuple_set:
        if inventory[0] == item[0]:
            possible_sets = int(inventory[1]/item[1])
            if max_sets > possible_sets:
                max_sets = possible_sets
            break