有关Python的问题:这里写的:if i[0]<1 or i[1]>150: nameages.remove(i)是不是有什么错误

有关Python的问题:
这里写的:
if i[0]<1 or i[1]>150:
nameages.remove(i)
是不是有什么错误,该怎么完成?

img

从后往前遍历,要不每remove一项数组会少一项,这样会少遍历remove掉的次数导致删不全

def validages(nameages):
    for i in range(len(nameages)-1,-1,-1):
        item=nameages[i]
        if item[1]<0 or item[1]>150:
            nameages.remove(item)
    dic=dict(nameages)
    return dic
assert validages([('Ann',15),('Bin',190),('Jack',75)])=={'Ann':15,'Jack':75}
assert validages([('Ann',-15),('Bin',190),('Jack',0)])=={'Jack':0}
assert validages([('Ann',-15),('Bin',190)])=={}

代码好像没问题

img

你的代码有2个问题
1.nameages是个可变值类型,你不应该在函数里改变它,否则会影响实参,当然本题目中改变不改变对后续没有影响
2.nameages是个list套tuple的结构,你不可以直接转dict,你得自己建立一个dict通过循环建立key和value把它填充上

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632