Функция, которая находит наибольшее число по индексу в списке списков - PullRequest
0 голосов
/ 08 октября 2018

Я делаю онлайн-курс по питону, и я застрял на одной из задач.

У меня есть список списков, как показано ниже, со строкой и 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 = []

Так что в основном проходит и находит самое тяжелоепредмет, и самый легкий предмет.Если самый легкий элемент больше моего оставшегося предела, все сбрасывается, и элементы добавляются в список вывода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...