我有一个包含一些值的列表。我想检查是否有任何元素在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以获取正确的关键字。
答案 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