检查一个列表是否存在于另一个列表中?
好的,我想用一种更符合Python风格的方法来做事情。
我该怎么做以下这些:
required_values = ['A','B','C']
some_map = {'A' : 1, 'B' : 2, 'C' : 3, 'D' : 4}
for required_value in required_values:
if not required_value in some_map:
print 'It Doesnt Exists'
return False
return True
我看过内置的函数all
,但我不太明白怎么把它用在上面的情况。
有没有什么建议可以让这个更符合Python的风格呢?
3 个回答
试试用列表推导式:
返回 not bool([x for x in required_values if x not in some_map.keys()])(这样做是为了让结果更清晰)
或者返回 not [x for x in required_values if x not in some_map.keys()](我觉得这样更符合Python的风格)
里面的 [] 语句会生成一个列表,包含所有在你的映射(map)中找不到的必需值。如果这个列表是空的,那它的值就是 False;如果不空,就是 True。
所以,如果映射中没有所有必需的值,列表推导式生成的列表里至少会有一个元素。这样就会得到 True 的结果,因此我们取反这个结果,以满足你的代码要求(也就是所有必需的值都应该在映射中)。
return set(required_values).issubset(set(some_map.keys()))
这段代码的作用是……
首先,它会……
接着,它会检查……
如果满足某个条件,它就会……
最后,代码会返回……
总的来说,这段代码的目的是……
希望这个解释能帮助你更好地理解这段代码!
当然可以!请看下面的内容:
在编程中,有时候我们需要让程序在特定的条件下执行某些操作。这就像给程序设定了一些规则,只有当这些规则被满足时,程序才会继续进行。
比如说,如果你在写一个游戏,当玩家的分数达到100分时,你可能想要显示一个“恭喜你”的消息。这种情况下,你就需要用到条件判断。
条件判断就像是在问程序:“如果这个条件成立,你就做这件事;如果不成立,就做其他事情。”这样可以让程序更加灵活,能够根据不同的情况做出不同的反应。
希望这个解释能帮助你更好地理解条件判断的概念!
all(value in some_map for value in required_values)