在Python中转义两个列表

2024-06-16 09:41:19 发布

您现在位置:Python中文网/ 问答频道 /正文

所以基本上我有一个非常典型的问题,我以前从stackoverflow找到了一些解决方案,但这并没有真正帮助我。你知道吗

我有一个学校的任务,需要我分析长橇队。我有名字,他们的评级和体重在三个单独的名单,我需要选择四个最好的评级和他们的体重加起来不得超过325公斤的竞争对手。我已经做的是,我已经创建了一个for循环,挑选出四个评分最高的竞争对手,但问题是,他们的评分可能很高,但他们的体重加起来超过325公斤。 例如,我有三个列表:

["Name1","Name2","Name3","Name4","Name5","Name6","Name7","Name8"] ## names
[1,2,3,4,5,6,7,8] ##ratings
[50,60,70,80,90,100,110,120] ##weights

我得到的是[5,6,7,8](他们每个人都有一个相应的体重表和名单,例如评级为5的选手体重为90公斤,名字是name 5),但他们的体重总和高于325公斤(90+100+110+120>;325)

到目前为止,我已经完成了编码,最小的元素(5)被移除并被另一个较低的元素替换,但是当切换最后一个元素还不够时,问题就出现了(我的意思是我不知道怎么做),我需要尝试替换元素6并保持元素5在适当的位置。你知道吗

现在切换的代码是:

while (kaalude_summa > 325): #if weight is over 325 kg
    positsioon = reiting.index(max(reiting)) #position for max rating
    if kaalud[positsioon] < kaalude_tulemused[3]: #two lists - one is for elements not in the resulting list (kaalud) and one is for the elements in resulting list (kaalude_tulemused)
        kaalude_tulemused[3] = kaalud[positsioon] #sets new weight in result list
        tulemuslist.remove(min(tulemuslist)) #removes number 5 from example list [5,6,7,8] (check above)
        tulemuslist.append(max(reiting)) #adds number 4 from example list
        kaalude_summa = kaalude_summa - vahekaal + kaalude_tulemused[3] #new calculated weight
    reiting.remove(max(reiting)) #removes element from list [1,2,3,4]
    kaalud.remove(kaalud[positsioon])

只要评分为1、2、3或4的选手体重加上其他三个体重(6、7、8)不超过325,这一方法就有效。你知道吗

我知道这可以通过两个for循环来实现,但我尝试了三次,失败得很惨。你知道吗

在我们学校必须用爱沙尼亚语写代码,所以我很抱歉没有用英语写。你知道吗

我真的希望我写的东西是可读的,你能帮助我。先谢谢你。你知道吗


Tags: in元素foris评分maxlistweight
2条回答

解决这个问题的一个方法是在后面加上while-s。虽然它仍然易碎,但它会检查每个位置的元素。你知道吗

while (kaalude_summa > 325): #AGA KUI JUHTUB SEE NALI, ET MAX REITINGUD LIIDETAKSE JA IKKA ON PAKSUD
    if reiting == []:
        break
    positsioon = reiting.index(max(reiting)) #max reitingu positsioon
    if kaalud[positsioon] < kaalude_tulemused[3]: 
        kaalude_tulemused[3] = kaalud[positsioon]
        tulemuslist.remove(min(tulemuslist))
        tulemuslist.append(max(reiting))
        kaalude_summa = kaalude_summa - vahekaal + kaalude_tulemused[3]
    reiting.remove(max(reiting))
    kaalud.remove(kaalud[positsioon])

if kaalude_summa > 325:
    reiting = reiting_safecopy[0:len(reiting_safecopy)]
    tulemuslist = tulemuslist_safecopy[0:len(tulemuslist_safecopy)]
    kaalud = kaalud_safecopy[0:len(kaalud_safecopy)]

while (kaalude_summa > 325): #KUI ESIMENE WHILE EI AIDANUD
    if reiting == []:
        break
    positsioon = reiting.index(max(reiting)) #max reitingu positsioon
    if kaalud[positsioon] < kaalude_tulemused[2]: 
        kaalude_tulemused[2] = kaalud[positsioon]
        tulemuslist.remove(min(tulemuslist))
        tulemuslist.append(max(reiting))
        kaalude_summa = kaalude_summa - vahekaal + kaalude_tulemused[3]
    reiting.remove(max(reiting))
    kaalud.remove(kaalud[positsioon])

if kaalude_summa > 325:
    reiting = reiting_safecopy[0:len(reiting_safecopy)]
    tulemuslist = tulemuslist_safecopy[0:len(tulemuslist_safecopy)]
    kaalud = kaalud_safecopy[0:len(kaalud_safecopy)]

while (kaalude_summa > 325): #KUI TEINE WHILE KA EI AIDANUD
    if reiting == []:
        break
    positsioon = reiting.index(max(reiting)) #max reitingu positsioon
    if kaalud[positsioon] < kaalude_tulemused[1]: 
        kaalude_tulemused[1] = kaalud[positsioon]
        tulemuslist.remove(min(tulemuslist))
        tulemuslist.append(max(reiting))
        kaalude_summa = kaalude_summa - vahekaal + kaalude_tulemused[3]

    reiting.remove(max(reiting))
    kaalud.remove(kaalud[positsioon])

if kaalude_summa > 325:
    reiting = reiting_safecopy[0:len(reiting_safecopy)]
    tulemuslist = tulemuslist_safecopy[0:len(tulemuslist_safecopy)]
    kaalud = kaalud_safecopy[0:len(kaalud_safecopy)]

while (kaalude_summa > 325): #SIIS VAHETAME VIIMAST ELEMENTI!!
    if reiting == []:
        break
    positsioon = reiting.index(max(reiting)) #max reitingu positsioon
    if kaalud[positsioon] < kaalude_tulemused[0]: 
        kaalude_tulemused[0] = kaalud[positsioon]
        tulemuslist.remove(min(tulemuslist))
        tulemuslist.append(max(reiting))
        kaalude_summa = kaalude_summa - vahekaal + kaalude_tulemused[3]

    reiting.remove(max(reiting))
    kaalud.remove(kaalud[positsioon])

一个蛮力的方法是找到所有可能的组合4雪橇。对于每一个,找到他们的组合重量,并扔掉那些超过325。在剩下的人中,选择评分最高的人。你知道吗

相关问题 更多 >