测试具有相同范围的变量

时间:2013-11-12 20:17:21

标签: python variables if-statement range

有没有办法测试同一范围内的多个变量(x1,y1,x2,y2在范围内......)? 我想在if

之后缩短代码
mouv="7647"
x1,y1,x2,y2=int(mouv[0]),int(mouv[1]),int(mouv[2]),int(mouv[3])
if len(mouv)==4 and x1 in range(8) and y1 in range(8) and x2 in range(8) and y2 in range(8):
    print("code ok")

2 个答案:

答案 0 :(得分:2)

以下是使用all的方法:

mouv = "7647"
# I cleaned this up too
x1,y1,x2,y2 = map(int, mouv[:4])
if len(mouv)==4 and all(z in range(8) for z in (x1, y1, x2, y2)):
    print("code ok")

请注意,如果范围很大,则应使用Python的数学运算符:

if len(mouv)==4 and all(-1 < z < 8 for z in (x1, y1, x2, y2)):

对于大范围,使用数学运算符比执行x in range(n)更快。然而,对于小范围,差异可以忽略不计。

答案 1 :(得分:2)

使用all

if len(muov) == 4 and all(int(x) in range(8) for x in mouv)

或者如果range是巨大的,那么使用链式比较运算符会更好,因为range在内存中创建一个列表,与简单的数学比较相比很慢:

if len(muov) == 4 and all(0 <= int(x) < 8 for x in mouv)