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