Вы можете получить тот же эффект, используя any()
и понимание генератора.
>>> sub = lambda a: any((w1 is not w2 and w1 in w2) for w1 in a for w2 in a)
>>>
>>> sub( ['c', 'd', 'ee', 'f'] )
False
>>> sub( ['c', 'd', 'ec', 'd'] )
True
Аналогично, итерация в пределах any()
останавливается на первом True
значении.
w1 is not w2
может быть лучшим способом избежать выражения, оцениваемого в True
, когда тот же объект сравнивается с самим собой, чем w1 != w2
.