python - Python startswith() 不删除所有匹配项
问题描述
不确定我是否在这里做任何愚蠢的事情,但我试图删除列表中的所有项目,00:00:00.
但不是所有项目都匹配。
tc = ['00:00:00.360', '00:00:00.920', '00:00:00.060', '00:00:02.600', '00:00:05.960', '00:00:01.040', '00:00:01.140', '00:00:01.060', '00:00:01.480', '00:00:00.140', '00:00:00.280', '00:00:01.200', '00:00:00.400', '00:00:01.220', '00:00:00.380']
for item in tc:
if item.startswith(str('00:00:00.')):
tc.remove(item)
print (tc)
结果:
['00:00:00.920', '00:00:02.600', '00:00:05.960', '00:00:01.040', '00:00:01.140', '00:00:01.060', '00:00:01.480', '00:00:00.280', '00:00:01.200', '00:00:01.220']
预期结果:
['00:00:02.600', '00:00:05.960', '00:00:01.040', '00:00:01.140', '00:00:01.060', '00:00:01.480', '00:00:01.200', '00:00:01.220']
知道这里可能是什么问题吗?
解决方案
那是因为你tc
在迭代它时会发生变化。您可以通过简单的列表理解来实现您的目标:
tc = [item for item in tc if not item.startswith('00:00:00.')]
推荐阅读
- javascript - React redux 嵌套智能组件 - 状态未映射到道具
- javascript - 我的代码有什么问题使它重复 5 次
- linux - linux & windows socket编程(linux服务器、windows客户端)
- mysql - Mysql创建触发器语法错误使用DELIMITER $$
- android - 软键盘将内容推送到屏幕外
- c# - 如何使用实体框架在 WPF c# 中的两个表之间插入一对多关系的数据?
- c - 如果打开文件,fopen() 会返回文件指针什么?
- android - 无法在领域中初始化列表
- django - JSON:带有 django-rest-framework-json-api 和 JWT 的 API
- mysql - 使用 .NET 执行 MySQL 的 SQL 文件