我有这个代码:
if self.date: # check date is not NoneType
if self.live and self.date <= now and self.date >= now:
return True
return False
我的IDE说:这看起来应该简化,即Python链式比较。
什么是链式比较,如何简化?
self.age <= now and self.age >= now
可简化为:
now <= self.age <= now
但是,由于只有当self.age
等于now
时才是真的,因此我们可以将整个算法简化为:
if self.date and self.live and self.age==now:
return True
return False
如果要检查年龄是否在某个范围内,请使用链接比较:
if lower<=self.age<=Upper:
...
或:
if self.age in range(Lower, Upper+1):
...
链接比较的示例如下所示。
age = 25
if 18 < age <= 25:
print('Chained comparison!')
请注意,在封面下,这与下图完全相同,只是看起来更好。
age = 25
if 18 < age and age <= 25:
print('Chained comparison!')
我尝试在两个文件之间进行链式比较,如果结果在指定的时间间隔内,则打印/写出结果。 这就是我目前所拥有的。 test1文件: 测试2文件: 剧本本身: 我的首选输出是在test3中只包含以下行: 在第一列中有匹配的ID 第3列和第4列中的两个数值介于test1文件中给出的值之间 我没有得到输出,我不知道哪里出错了。
我有两个整数值和,我写以下语句: 此语句带有下划线,工具提示告诉我必须: 简化链式比较 据我所知,这种比较几乎和它们来的一样简单。我错过了什么? 这个问题和链接有点不同,比较起来有不同的变量。
我正在用PyCharm编写一些python代码。当我编写以下测试时,它给了我一个警告。
问题内容: 假设我有一对班 我希望先按第一个值排序,然后再按第二个值排序。现在,如果我这样做 一切正常,列表按对的第一个值排序,但是如果我这样做 它因错误而失败 好的,所以它可能无法推断参数,所以如果我这样做 它因错误而失败 为什么它对compare()而不是compare()。thenComparing()有效? 问题答案: 该错误似乎与的通用参数有关。一种解决方法是尝试使用显式类型: 请注意,
问题内容: 用于比较的Python文档说: 可以任意链接比较,例如与等效,不同之处在于比较仅被评估一次(但在两种情况下都被发现为假,则根本不评估)。 所以像(人为的例子): 只要求输入一次。这很有道理。和这个: 仅询问 是否 介于1和10之间,并且仅打印“ woo!”。 if 也在10到20之间(证明它们可以“任意链接”)。这也是有道理的。 但是我仍然很好奇在lexer / parser / co
但是Pycharm说我可以简单地说: 我做了一些搜索,却找不到类似的东西。我的问题是这样简化此函数是否正确: 如果是这样,它是否安全,除了它更短之外,这个版本和非简化版本之间有什么区别吗?如果不是正确的简化方式,那是什么呢?