每天一个Python小技巧(2)
if else
很多人都用过if/else
,但却不知道while和for后面也可以接else。
故事
有这样一个列表,里面存放了一些牛逼人物的信息
:
data = [
{"name": "迷龙", "age": 21},
{"name": "汤总", "age": 18},
{"name": "骆俊", "age": 23}
]
今天,老板给我下了个命令,要求牛逼人物列表里必须加入"芳龄28的榜一大哥"
,而且还不能重复,不然就要炒我鱿鱼!
我心想,这还不简单吗,于是奋笔疾书:
def main(data):
found = False
for d in data:
if d.get("name") == "榜一大哥":
found = True
break
if not found:
data.append({"name": "榜一大哥", "age": 28})
我这里用了个变量,去判断找到榜一大哥
没有,代码很简单,我奶奶都能看懂。
for和while中的else
先说格式(while与for是一样的):
for x in xx:
pass
else:
pass
再谈else的执行条件:
-
如果循环正常结束
, 如果有else语句块则会执行else部分; -
如果循环不正常结束
, 比如通过break离开了for循环,那else部分则不会执行。
while和for如出一辙。
改写例子
data = [
{"name": "迷龙", "age": 21},
{"name": "汤总", "age": 18},
{"name": "骆俊", "age": 23}
]
print("执行之前", data)
for d in data:
if d.get("name") == "榜一大哥":
break
else:
data.append({"name": "榜一大哥", "age": 28})
print("执行之后", data)
遍历data数组,如果里面有name等于榜一大哥的数据,直接break,那么else的添加步骤也不会再执行。
image我们加上芳龄23
的榜一大哥再测测!
可以看到数据没有增加,说明else的逻辑没有执行。
网友评论