2017-04-08 102 views
2

这里是检查在多值变量的简单的例子:使用“在”操作符,括号与大括号

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"): 

花括号{...}(...)括号里的有什么区别?

如果可以回答,最好的是什么?

回答

2

{...}创建一个集合,而(...)将为您创建一个元组(实际元组创建标记为逗号(,))。对于小数据,可能没有可察觉的差异。

在做一个in检查一组,该var的散列值进行计算并做一个元组成员资格测试时,同时作为指数的基础上,元组是从开始到var搜索发现或不找到。

1

第一个,即{...}表示/创建一个set,使用in,您将执行一组设置成员资格操作,导致O(1)复杂性。

(...)另一方面表示/创建tuple。在tuple中搜索in的会员资格是O(N),因为它会穿过tuple中的每个元素执行检查以查看是否存在匹配项。

在一个像你这样的小案例中,这可能不会有太大的区别(除非是在一个紧密的循环中)。一般来说,你应该更喜欢{...},因为它不是很难打字,并有效率的好处。