python-3.x 将if循环减少为一行[闭合]

lawou6xi  于 2022-12-24  发布在  Python
关注(0)|答案(2)|浏览(133)

已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。

2天前关闭。
Improve this question
我想减少Python中下面的if循环,有什么有效的方法吗?

if a and b:
  print("case1")
elif not a and b:
  print("case2")
elif not a:
  print("case3")
xriantvc

xriantvc1#

虽然我建议不要使用这种类型的代码,但如果这是某种需求,您可以从技术上做到:

a = True
b = False
{(True, True): lambda: print("case1"), (True, False): lambda: None, (False, True): lambda: print("case2"), (False, False): lambda: print("case3"),}[(a, b)]()

如果我有一点回旋余地来稍微改进这一点,我可能会这样做:

a = True
b = False
lookup = {
    (True, True): lambda: print("case1"),
    (True, False): lambda: None,
    (False, True): lambda: print("case2"),
    (False, False): lambda: print("case3"),
}
lookup[(a, b)]()

然而,我个人几乎肯定会使用与你最初的答案相近的答案:

a = True
b = False

if a:
    if b:
        print("case1")
else:
    if b:
        print("case2")
    else:
        print("case3")
368yc8dk

368yc8dk2#

print("case1" if a and b else "case2" if not a and b else "case3")

相关问题