gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章基于python for in if 连着写与分开写的区别说明由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

如下:

?
1
2
3
4
5
6
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做个实验

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

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

补充:python的for i in list 陷阱 。

?
1
2
3
4
d = [ 1 , 2 , 3 , 4 , 5 ]
for i in d:
   d.remove(i)
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
2
3
4
d = [ 1 , 2 , 3 , 4 , 5 ]
for i in d[:]:
   d.remove(i)
print d

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

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

原文链接:https://blog.csdn.net/woailyoo0000/article/details/79285397 。

最后此篇关于基于python for in if 连着写与分开写的区别说明的文章就讲到这里了,如果你想了解更多关于基于python for in if 连着写与分开写的区别说明的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com