Dan*_*wer 1 python list operator-keyword
我有以下列表:
languages =["java", "haskell", "Go", "Python"]
animals = ["pigeon", "python", "shark"]
names = ["Johan","Frank", "Sarah"]
Run Code Online (Sandbox Code Playgroud)
我想知道以下所有三个列表中是否存在python.以下if语句是我使用"in"方法和"and"运算符得出的结果.
if("Python" in languages and "Python" in animals and "Python" in names )
Run Code Online (Sandbox Code Playgroud)
有没有办法将这个语句压缩成较小的长度?
IE
if("Python" in languages and in animals and in names)
Run Code Online (Sandbox Code Playgroud)
你可以避免重复"Python":
if all("Python" in L for L in [languages, animals, names]):
Run Code Online (Sandbox Code Playgroud)
但这并不短得多.
如果这是您期望重复进行的测试,那么预先计算列表的交集会更有效:
lanimes = set(languages) & set(animals) & set(names)
if "Python" in lanimes:
Run Code Online (Sandbox Code Playgroud)
(in对于列表,运算符为O(n),对于集合,运算符为O(1).)