Python 将if语句缩短

Python 将if语句缩短,python,optimization,code-formatting,Python,Optimization,Code Formatting,我有以下代码: if sys.argv[2].isdigit() and sys.argv[3].isdigit() and sys.argv[2] >='3' and sys.argv[3] >='3': print 'works' else: sys.exit() 这是可行的,但我试图找到一种方法,使“if sys.argv[2].isdigit()和sys.argv[3].isdigit()和sys.argv[2]>='3'和sys.argv[3]>='3':

我有以下代码:

if sys.argv[2].isdigit() and sys.argv[3].isdigit() and sys.argv[2] >='3' and sys.argv[3] >='3':
    print 'works'
else:
    sys.exit()

这是可行的,但我试图找到一种方法,使“if sys.argv[2].isdigit()和sys.argv[3].isdigit()和sys.argv[2]>='3'和sys.argv[3]>='3':”更短更漂亮。有没有办法达到这个目的?谢谢

这是一个很好的、可扩展的条件,可以取代您的:

all(map(lambda x: x.isdigit() and int(x) > 3, sys.argv[2:4]))

如果
sys.argv[2:4]
的所有元素都是大于3的数字,则这将是正确的。对于检查两个数字来说,这可能也有点过头了,但这比单独检查所有数字可读性强得多,任何人读到这篇文章时都应该非常清楚你想做什么。

这是一个很好的、可扩展的条件,可以取代你的条件:

all(map(lambda x: x.isdigit() and int(x) > 3, sys.argv[2:4]))

如果
sys.argv[2:4]
的所有元素都是大于3的数字,则这将是正确的。对于检查两个数字来说,这可能也有点过头了,但这比单独检查所有数字可读性强得多,而且读到这篇文章的人都应该清楚地知道你想做什么。

如果
arg
s包含多位数字符串怎么办?你能先说明你想解决什么问题吗?例如,
“12”>=“3”
False
。这是你想要的吗?如果不是,则将值强制转换为
int
s(并捕获任何错误)可能比执行字符串比较更好。请尝试改用该模块。@Iguananaut:虽然这通常是一个好主意,但我认为如果我们只想检查两个数字,在这里就太过分了。因为解析它还需要编写额外的逻辑。@WillemVanOnsem你能给我举个例子吗?如果
arg
s包含多位数字符串怎么办?你能先说明你想解决什么问题吗?例如,
“12”>=“3”
False
。这是你想要的吗?如果不是,则将值强制转换为
int
s(并捕获任何错误)可能比执行字符串比较更好。请尝试改用该模块。@Iguananaut:虽然这通常是一个好主意,但我认为如果我们只想检查两个数字,在这里就太过分了。因为解析它还需要编写额外的逻辑。@WillemVanOnsem你能给我举个例子吗?