• 售前

  • 售后

热门帖子
入门百科

基于python for in if 连着写与分开写的区别分析

[复制链接]
13471756666 显示全部楼层 发表于 2021-10-26 13:37:11 |阅读模式 打印 上一主题 下一主题
如下:
  1. links.extend(link for link in get_links(html) if re.match(link_regex, link))
  2. # 上面的语句分开写,如下
  3. # 但下面需要使用links.append,如果依然使用links.extend会出现错误的结果
  4. for link in get_links(html):
  5.   if re.match(link_regex, link):
  6.      links.append(link)
复制代码
让我们用ipython做个实行:

由上图可以看出,for in if 连击推导式隐式的将link由str变革为了list,而分开写是不会帮我们转换的,以是必要利用append把整个str加入到list.
增补:python的for i in list 陷阱
  1. d = [1,2,3,4,5]
  2. for i in d:
  3.   d.remove(i)
  4. print d
复制代码
效果是 :
  1. [2, 4]
复制代码
这个陷阱比力埋伏,我再用白盒子测试的时间,发现了这个bug,大抵缘故原由就是remove d[0]之后,i 自动酿成了 d[1], 但是 d已经酿成了 d[2,3,4,5],以是i=d[1]就悲催的指向了3,跳过了2!
看来python照旧要注意了解底层实现啊!
办理办法是
  1. d = [1,2,3,4,5]
  2. for i in d[:]:
  3.   d.remove(i)
  4. print d
复制代码
就可以实现边遍历边删除了
以上为个人履历,渴望能给各人一个参考,也渴望各人多多支持草根技术分享。如有错误或未考虑完全的地方,望不吝赐教。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作