Mam kod:
if "l" or "g" or "g*" or "kg" or "kg." or "kg," or "litr" or "litry" in list_str:
Po pierwsze, to ten kod nie działa. To co napisałeś jest równoważne do:
if "l" or "g" or "g*" or "kg" or "kg." or "kg," or "litr" or ("litry" in list_str):
i w praktyce zawsze jest prawdziwy.
I sprawdzać czy jakikolwiek element z tej listy jest w zmiennej list_str, np. tak:
Zależnie od rozmiaru list, są różne rozwiązania o różnej złożoności i wydajności. W kazdym razie najbardziej bezpośrednie tłumaczenie to:
if any(element in list_str for element in allowed_weights):
Lub na odwrót (jeśli `list_str` to lista stringów a nie string):
if any(element in allowed_weights for element in list_str ):
Jeśli się da, można też prawą stronę `in` zamienić na seta.
A jeśli oba mogą być zbiorami to wystarczy sprawdzić czy jest między nimi przecięcie:
if set(list_str) & allowed_weights_set: