Я делаю онлайн-курс по питону, и я застрял на одной из задач.
У меня есть список списков, как показано ниже, со строкой и int, int представляет вес,и у меня есть определенный предел веса в 10:
WeightLimit = 10
MyList = [['ItemOne','9'],['ItemTwo','4'],['ItemThree','7'],['ItemFour','2'], ,['ItemFive','1']]
Мне нужно переместить эти предметы в новый список, основанный на моем пределе веса, и каждый новый предмет по сути является доставкой.Сначала мне нужно доставить самые тяжелые предметы.
Так что, по сути, ItemOne будет моей первой и единственной доставкой, так как мой лимит сейчас равен 1 (10 - 9).Мой лимит теперь сбрасывается до 10, так как я больше не могу доставить.Моя следующая доставка будет ItemThree, ItemFour, ItemFive (7 + 2 + 1 = 10).Мой лимит сбрасывается до 10, так как я не могу больше доставлять.Моя последняя поставка теперь ItemTwo.
Мой вывод будет:
newList = [['ItemOne'],['ItemThree', 'ItemFour', 'ItemFive'], ['ItemTwo']]
Пока у меня есть:
heaviest = 0
lightest = 10
name = ''
weightLimit = limit
outputList = []
loopList = []
for item in MyList:
if int(item[1]) > heaviest:
heaviest = int(item[1])
name = item[0]
elif int(item[1]) < lightest:
lightest = int(item[1])
loopList.append(name)
weightLimit = weightLimit - heaviest
for item in myList:
if name == item[0]:
MyList.remove(item)
if lightest > weightLimit:
weightLimit = 10
outputList.append(loopList)
loopList = []
Так что в основном проходит и находит самое тяжелоепредмет, и самый легкий предмет.Если самый легкий элемент больше моего оставшегося предела, все сбрасывается, и элементы добавляются в список вывода.