以下是跨多个值检查变量的简单示例:
var = "a"
if var == "a" or var == "b" or var == "c":
print("true")
else:
print("false")
经过一次小小的研究,我found另一个更为先进的方法,Martijn Pieters:
var = "a"
if var in {"a", "b", "c"}:
print("true")
else:
print("false")
但是,在我上面发布的链接中,声明括号也可以接受:
if var in ("a", "b", "c"):
这里的花括号{...}
和(...)
括号有什么区别?
如果有可能回答,最好的是什么?
答案 0 :(得分:2)
{...}
创建一个集合,而(...)
将为您创建一个元组(实际的元组创建标记是逗号(,))。对于小数据,可能没有明显的差异。
使用set进行in
检查时,会计算var
的哈希值并将其用作索引的基础,而在使用元组进行成员资格测试时,会从元组搜索元组从找到或找不到var
开始。
答案 1 :(得分:1)
第一个,即{...}
表示/创建set
,使用in
设置您正在执行设置成员资格操作,结果为O(1)
复杂性。
(...)
表示/创建tuple
。在in
中搜索tuple
成员身份的成员资格为O(N)
,因为它会检查tuple
中的每个元素,以检查是否匹配。
在像你这样的小案例中,这可能会带来很大的不同(除非是在一个紧密的循环中)。一般来说,您应该更喜欢{...}
,因为它不是很难打字并且有效率。