缩小if语句

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)

Dan*_* D. 6

你可以避免重复"Python":

if all("Python" in L for L in [languages, animals, names]):
Run Code Online (Sandbox Code Playgroud)

但这并不短得多.


jas*_*per 5

如果这是您期望重复进行的测试,那么预先计算列表的交集会更有效:

lanimes = set(languages) & set(animals) & set(names)

if "Python" in lanimes:
Run Code Online (Sandbox Code Playgroud)

(in对于列表,运算符为O(n),对于集合,运算符为O(1).)