如果条件与python中的列表理解

时间:2018-01-05 04:36:22

标签: python python-2.7 if-statement list-comprehension

我有一个包含一些值的列表。我想检查是否有任何元素在if语句的另一个列表中显示。 我已经完成了类似于列表理解的条件,但没有按预期工作。 我的代码是

fileop=["create","open","append","delete","move","copy"]   
a=raw_input("enter a command\n")    
tokens=a.split(" ")

def data(i):    
     return i

if [data(i) in tokens for i in fileop] in tokens:    
     print "file operations"

     if "create" in tokens:    
        print "create"    
     elif "open" in tokens:    
        print "open"
     elif "delete" in tokens:    
         print "delete"

如果我的输入类似于删除file.how以获取正确的关键字。

2 个答案:

答案 0 :(得分:0)

你在这里接近两种不同的解决方案!一种是制作一个真值或假值的列表(好的,可迭代的),表明fileop的每个项目是否在tokens中,然后检查any是否为真:

if any(data(i) in tokens for i in fileop):

另一个是检查令牌和操作之间的集合交集是否为空:

if set(tokens) & set(fileop):

前者更典型,但这可能与第二个in tokens的目标相同。

答案 1 :(得分:0)

如果你想知道输入中与文件操作相对应的标记,我们可以这样做:

operations = [token for token in tokens if token in fileop]

操作将是一个包含代表文件操作的所有标记的列表

例如:

tokens = ["open", "move", "rename"]

操作将包含["打开","移动"]

如果要打印列表:

for fileop in [token for token in tokens if token in fileop]: 
    print fileop