我试图创建一个程序,该程序要求八个列表中的任何一个等于单独的列表。我有几个列表变量:testC1,testC2等和xwin,以及一个字符串:结果很难解释,所以这里是代码:
result = ("n")
print ("testD1 is:",str(testD1)) #Debugging
print ("xwin is:",str(xwin)) #Debugging
if (testC1 or testC2 or testC3 or testR1 or testR2 or testR3 or testD1 or testD2) == (xwin):
result = ("x")
else:
pass
print (result) #Debugging
当代码运行时,我得到以下结果:
>>> testD1 is: ['x', 'x', 'x']
>>> xwin is: ['x', 'x', 'x']
>>> n
我希望得到" x"因此,我只想检查一个(或多个)列表(在本例中为testD1)是否与' xwin'相同。
我知道有可能通过一系列if,elif语句,但我确信必须有一些方法可以做到这一点,而不是那样做。我在这种情况下对语法不太确定。
非常感谢任何帮助。
答案 0 :(得分:1)
非空列表在布尔上下文中求值为True
,例如,如果你有:
([] or ['a', 'b', 'c'] or ['x', 'x', 'x']) == (['x', 'x', 'x'])
条件的左侧部分将导致['a', 'b', 'c']
不等于['x', 'x', 'x']
。
然后做你想做的事你可以替换
(testC1 or testC2 or testC3 or testR1 or testR2 or testR3 or testD1 or testD2) == (xwin)
通过
xwin in (testC1, testC2, testC3, testR1, testR2, testR3, testD1, testD2)