简化if语句Python

时间:2015-11-11 14:54:39

标签: python if-statement

有没有办法简化这个if语句:

if self[by1,bx1]=='A' or self[by1,bx1+1]=='A' or self[by1,bx1+2]=='A' or self[by1,bx1+3]=='A':

来自一个类,其中self [y,x]获取表中的数据。

原始代码是:

for i in range(4):
                if self[by1,bx1]=='A' or self[by1,bx1+1]=='A' or self[by1,bx1+2]=='A' or self[by1,bx1+3]=='A':
                    print('There is already a ship here')
                    by1=0
                    bx1=0
                    self.placing_Battleship_p1()
                elif by1==0 or by1==0:
                    pass
                else:
                    self[by1,bx1+i]='B'

我想要检查一下我餐桌的每个位置是否都不等于' A'在为'B'。

更改它们之前

3 个答案:

答案 0 :(得分:7)

当然,您可以使用any。这应该是等价的。

if any(self[by1,bx1+x]=='A' for x in range(4)):

答案 1 :(得分:2)

你可以使用any,正如Morgan Thrapp所说。或者您可以使用in

if 'A' in {self[by1,bx1+i] for i in range(4)}:

答案 2 :(得分:1)

您可以获取数组的子集,因为它是连续的,并使用in:

if 'A' in self[by1,[bx1:bx1+3]]:

例如:

by1=0
bx1=3
a=[[2, 3, 4, 5, 6, 7], [10, 10, 10, 10]]
print (6 in a[by1][bx1:bx1+2])
>>> True