首页 > 解决方案 > 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']

知道这里可能是什么问题吗?

标签: python

解决方案


那是因为你tc在迭代它时会发生变化。您可以通过简单的列表理解来实现您的目标:

tc = [item for item in tc if not item.startswith('00:00:00.')]

推荐阅读