我正在编写一大块代码,我想缩短长度or
表达式。
假设我们有一个列表,比如:
farm = ["cow","cow","cow", "hen","hen","hen", "fox","fox","fox", "hen","hen", "hen"]
lookup = ["cow","hen"]
我应该检查在farm
列表中是否有lookfor
的三个连续元素。你知道吗
一种方法是:
for i in range (0,len(farm) - 2):
if ((farm[i] == farm[i+1] == farm[i+2] == lookup[0])
or (farm[i] == farm[i+1] == farm[i+2] == lookup[1])):
# do something
现在,如果lookup
中的元素数很小,可以用上面的方法来写。但是,如果太长,代码看起来很麻烦,而且很难维护。有没有一种更简洁的方法来编写代码,也许是以列表理解格式编写的,这样我就不必手动编写来查找lookup
的所有元素了?你知道吗
未经测试,但一些“像这样”;—)应该工作。
any()
是处理任意数目的or
的自然方式,而all()
是处理任意数目的and
的自然方式如果你需要
i
此变体将为您提供匹配的
i
值,与原始代码非常相似:试试这个
将检查精确的连续三个键。对于至少三个,您可以按大小筛选组,并检查每个条目是否在查找中。你知道吗
相关问题 更多 >
编程相关推荐