Python 使用;在;运算符,括号与花括号
以下是跨多个值检查变量的简单示例:Python 使用;在;运算符,括号与花括号,python,python-3.x,Python,Python 3.x,以下是跨多个值检查变量的简单示例: var = "a" if var == "a" or var == "b" or var == "c": print("true") else: print("false") 在做了一个小研究之后,我发现了Martijn Pieters的另一个更高级的方法: var = "a" if var in {"a", "b", "c"}: print("true") else: print("false") 但是,在我上面发布的链接
var = "a"
if var == "a" or var == "b" or var == "c":
print("true")
else:
print("false")
在做了一个小研究之后,我发现了Martijn Pieters的另一个更高级的方法:
var = "a"
if var in {"a", "b", "c"}:
print("true")
else:
print("false")
但是,在我上面发布的链接中,括号也是可以接受的:
if var in ("a", "b", "c"):
这里的花括号{…}
和(…)
之间有什么区别
如果可以回答,什么是最好的?第一个,即
{…}
表示/创建一个集合
,使用中的对一个集合执行集合成员资格操作,这会导致O(1)
复杂性
另一方面,(…)
,表示/创建一个元组。在元组中搜索in
的成员身份是O(N)
,因为它会遍历元组中的每个元素,以检查是否存在匹配项
在像您这样的小案例中,这可以说不会有太大的区别(除非是在一个紧密的循环中)。一般来说,您应该更喜欢{…}
,因为它实际上并不难键入,而且具有高效的优点。{…}
创建一个集合,而(…)
将为您创建一个元组(实际的元组创建标记是逗号(,))。对于小数据,可能没有明显的差异
在对集合执行检查时,计算var
的散列值并将其用作索引的基础,而在对元组执行成员资格测试时,从开始搜索元组,直到找到或未找到var