• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    基于python for in if 连着写与分开写的区别说明

    如下:

    links.extend(link for link in get_links(html) if re.match(link_regex, link))
    # 上面的语句分开写,如下
    # 但下面需要使用links.append,如果依然使用links.extend会出现错误的结果
    for link in get_links(html):
      if re.match(link_regex, link):
         links.append(link)

    让我们用ipython做个实验:

    由上图可以看出,for in if 连击推导式隐式的将link由str转变为了list,而分开写是不会帮我们转换的,所以需要使用append把整个str加入到list.

    补充:python的for i in list 陷阱

    d = [1,2,3,4,5]
    for i in d:
      d.remove(i)
    print d

    结果是 :

    [2, 4]

    这个陷阱比较隐蔽,我再用白盒子测试的时候,发现了这个bug,大致原因就是remove d[0]之后,i 自动变成了 d[1], 但是 d已经变成了 d[2,3,4,5],所以i=d[1]就悲催的指向了3,跳过了2!

    看来python还是要注意了解底层实现啊!

    解决办法是

    d = [1,2,3,4,5]
    for i in d[:]:
      d.remove(i)
    print d

    就可以实现边遍历边删除了

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

    您可能感兴趣的文章:
    • Python中在for循环中嵌套使用if和else语句的技巧
    • python中for in的用法详解
    • Python for循环及基础用法详解
    上一篇:pandas || df.dropna() 缺失值删除操作
    下一篇:Python 如何用一行代码实现for循环初始化数组
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    基于python for in if 连着写与分开写的区别说明 基于,python,for,连着,写,与,