我正在上一门在线python课程,我被其中一项任务困住了。
我有一个类似于以下列表的列表,其中包含一个字符串和一个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 = []
因此,基本上可以遍历并找到最重的项目和最轻的项目。如果最轻的物品大于我的剩余限制,则所有设置都会重置,并将这些物品添加到输出列表中。