Halo-Z 2020-11-06 09:27 采纳率: 50%
浏览 11

python2在使用re模块对元素进行循环筛序时,无法对最后的一个元素进行处理

import re
# r = re.compile('^\w+__.+__\d+\.ok$')

test_lst = ['test', 'public__test_t__16385.ok', 'tsdasys', 'yuyguyuyvhhj']
# test_str = 'public__test_t__16385.ok'

for t in test_lst:
    print '<>' + t

for t in test_lst:
    print '<<' + t
    # rm = re.match(r'.*ok$', t)
    if re.match('^\w+__.+__\d+\.ok$', t) is not None:
        print t + ' ok'
        continue
    test_lst.remove(t)

print test_lst

使用的是python2.7最新版本的环境,只要最后不匹配的元素超过两个,那最后一个元素就会莫名消失,这个怎么看都感觉像是bug。有大佬清楚是咋回事吗?

  • 写回答

2条回答 默认 最新

  • PythonJavaC++go 2020-11-06 10:55
    关注

    test_lst.remove(t) 不要一边循环一边移除,先定位了所有要删除的元素

    循环结束了再统一处理

    评论

报告相同问题?

悬赏问题

  • ¥15 C# 爬虫融通金网址实时银价
  • ¥15 热敏电阻NTC,温控不同颜色的LED的亮与灭,PCB
  • ¥20 ESP32使用MicroPyhon开发,怎么获取485温湿度的值,温湿度计使用的鞋子是Modbus RTU
  • ¥50 苹果MGIE项目部署缺少emb权重
  • ¥15 采用ansys进行机翼在特定路径下的打孔过程中的受力分析
  • ¥15 单片机adb主机连接手机,usb调试密钥无法保存
  • ¥15 已知X和Y有以下关系,求X和Y的关系式
  • ¥15 net core 同时编辑怎么防止数据多保存了
  • ¥15 matlab做ba模型让其在ba和er规则下生长
  • ¥15 请问Quartus的Verilog代码怎么写?