Если вы хотите проверить эти подмножества, вам придется проверять каждый из них отдельно. Ваше использование all
также неправильно. all
проверяет, являются ли все элементы последовательности, переданные ему, "Truthy" .
all(['A', 'B', 'C'])
# True
Таким образом, ваш if
фактически уменьшается до:
if True or True or True in l1:
Выражение замыкает на if True
, поэтому всегда выполняется.
Я бы сделал это, выполнив проверку set.issuperset()
для каждого подмножества в столбцах df
.
subsets = [{'A', 'C', 'D'}, {'A', 'D'}, {'C', 'D'}]
columns = set(df)
if any(columns.issuperset(s) for s in subsets):
print('Violation')