返回条件语句
返回条件语句
这个问题已经有了答案:
我的问题是:是否可以在返回语句中使用完整的条件语句(if、elif、else)?
我知道我可以这样做:
def foo(): return 10 if condition else 9
我可以像这样做吗:
def foo(): return 10 if condition 8 elif condition else 9
后记:看起来并不容易阅读,我猜它可能没有有效的用例。不管怎样,好奇心促使我提出问题。感谢您提供的任何答案。
admin 更改状态以发布 2023年5月22日
当然可以啊!不过需要小心使用,除非你像Peter Norvig(此代码来源)一样是专家!
def hand_rank(hand): "Return a value indicating how high the hand ranks." # counts is the count of each rank # ranks lists corresponding ranks # E.g. '7 T 7 9 7' => counts = (3, 1, 1); ranks = (7, 10, 9) groups = group(['--23456789TJQKA'.index(r) for r, s in hand]) counts, ranks = unzip(groups) if ranks == (14, 5, 4, 3, 2): ranks = (5, 4, 3, 2, 1) straight = len(ranks) == 5 and max(ranks)-min(ranks) == 4 flush = len(set([s for r, s in hand])) == 1 return ( 9 if (5, ) == counts else 8 if straight and flush else 7 if (4, 1) == counts else 6 if (3, 2) == counts else 5 if flush else 4 if straight else 3 if (3, 1, 1) == counts else 2 if (2, 2, 1) == counts else 1 if (2, 1, 1, 1) == counts else 0), ranks
为了澄清,在使用多个谓词的Python "ternary"语句时,只需要使用else if
而不是使用elif
。