百年bd 2022-05-04 11:58 采纳率: 66.7%
浏览 29
已结题

请问为啥这种连着两个是unknown的,第二个总是删不掉是咋回事儿呀?(python)

问题遇到的现象和发生背景
students = [
{'name': '张三', 'age': 18, 'score': 52, 'tel': '1388888998', 'gender': 'female'},
{'name': '李四', 'age': 28, 'score': 89, 'tel': '1388666666', 'gender': 'male'},
{'name': '王五', 'age': 21, 'score': 95, 'tel': '1365588889', 'gender': 'unknown'},
{'name': 'fuck', 'age': 20, 'score': 90, 'tel': '156666789', 'gender': 'unknown'},
{'name': 'chris', 'age': 17, 'score': 98, 'tel': '13777775523', 'gender': 'male'},
{'name': 'jack', 'age': 23, 'score': 52, 'tel': '13999999928', 'gender': 'female'},
{'name': 'tony', 'age': 15, 'score': 93, 'tel': '1388888888', 'gender': 'unknown'}]
问题相关代码,请勿粘贴截图
#删除所有性别未知的学生
for i in students:
    if i['gender'] == 'unknown':
        students.remove(i)
print(students)
运行结果及报错内容

img

我的解答思路和尝试过的方法

为啥总是有图片这种没有删掉的‘unknown’

我想要达到的结果

所有unknown的人都删掉

  • 写回答

1条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-05-04 12:47
    关注

    因为你在遍历列表students的时候,students本身又发生了改变。比如遍历到第三个元素的时候,发现是unknown,把该元素删掉了,下一个元素的位置前移,变成了新的第三个,但循环认为第三个元素已经遍历过了,于是下一个开始遍历第四个,就把这个连着的元素跳过去了。这也是为什么建议不要在遍历列表的时候去改变列表长度的原因。
    建议遍历列表的副本(students[:])解决此问题。

    for i in students[:]:
        if i['gender'] == 'unknown':
            students.remove(i)
    print(students)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月16日
  • 已采纳回答 5月8日
  • 创建了问题 5月4日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表