我有一系列值(L,R,U,D
)和两个变量d
和newd
,其中包含其中一个。我需要检查d
和newd
是否属于同一子集(L,R
或U,D
)。
我知道我可以这样做:
d in {'L','R'} and newd in {'U','D'} or d in {'U','D'} and newd in {'L','R'}
如果False
或L,R
中的值都为U,D
,则确实会返回True
。尽管如此,我觉得它还有很多。关于更多DRY方法的一些建议?
答案 0 :(得分:4)
如果您知道只有两个集合并且您的值必须在一个或另一个中,那么您可以将其简化为:
(d in set1) == (newd in set2)
说明:
==
的两边都是True
,因此表达式返回True
。==
的两边都是False
,因此表达式返回True
。==
的一侧将返回False
,另一侧将返回True
,因此表达式的结果将为False
。< / LI>
答案 1 :(得分:0)
怎么样:
In [8]: dmap = {'L':0, 'R':0, 'U':1, 'D':1}
In [9]: dmap[d] != dmap[newd]
Out[9]: False