有没有办法测试同一范围内的多个变量(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")
有没有办法测试同一范围内的多个变量(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")
这是一种使用方法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)
. 然而,在小范围内,差异可以忽略不计。
使用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)