检查两个变量是否具有来自两个不同集合的值(DRY 方式)
我有一系列值 (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'}
如果它们都具有 L,R
或 U,D
和 中的值,这确实会返回
。尽管如此,我还是觉得它很多余。关于更DRY方法的一些建议?False
否则为真
I have a range of values (L,R,U,D
) and two variables, d
and newd
, containing one of them. I need to check if d
and newd
are in the same subset (L,R
or U,D
) or not.
I know I can do this:
d in {'L','R'} and newd in {'U','D'} or d in {'U','D'} and newd in {'L','R'}
this indeed returns False
if they both have values in L,R
or U,D
, and True
otherwise. Still, I find it much reduntant. Some suggestions about a more DRY approach?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您知道只有两个集合,并且您的值必须位于其中一个集合中,那么您可以将其简化为:
说明:
==
两边都是True
,因此表达式返回True
。==
两边都是False
,因此表达式返回True
。==
的一侧将返回False
,另一侧返回True
,因此表达式的结果将为错误
。If you know that there are only two sets and that your values must be in one or the other, then you can simplify it to this:
Explanation:
==
areTrue
, so the expression returnsTrue
.==
areFalse
, so the expression returnsTrue
.==
will returnFalse
and the otherTrue
so the result of the expression will beFalse
.怎么样:
How about: