• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak sprawdzić czy element listy jest w innej liście w Python

0 głosów
246 wizyt
pytanie zadane 5 marca w Python przez TeaCup Obywatel (1,360 p.)

Hej,

Mam kod:

if "l" or "g" or "g*" or "kg" or "kg." or "kg," or "litr" or "litry" in list_str:
    # do something

Chciałbym go zrefaktoryzować tak abym mógł stworzyć listę:

allowed_weights = ["l", "g", "g*", "kg", "kg.", "kg,", "litr", "litry"]

I sprawdzać czy jakikolwiek element z tej listy jest w zmiennej list_str, np. tak:

if allowed_weights in list_str:
    # do something

Jednak tak się nie da.

Moje pytanie to: Jak to zrobić bym mógł sprawdzić czy jakiś element listy allowed_weights jest w liście list_str?

Dzięki za pomoc.

Cześć.

1 odpowiedź

+2 głosów
odpowiedź 5 marca przez adrian17 Ekspert (300,440 p.)
wybrane 5 marca przez TeaCup
 
Najlepsza

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:

 

komentarz 5 marca przez TeaCup Obywatel (1,360 p.)

Hej @adrian17,

Dziękuję ci za odpowiedź. A czy wytłumaczył byś mi dlaczego:

if "l" or "g" or "g*" or "kg" or "kg." or "kg," or "litr" or "litry" in list_str:

Jest zawsze prawdziwe?

komentarz 5 marca przez adrian17 Ekspert (300,440 p.)

Tak jak napisałem wyżej, to jest równoważne

if "l" or (...etc...) or ("litry" in list_str):

A coś takiego jest przecież zawsze prawdziwe:

if "l":

Więc

if "l" or cokolwiek:

też z definicji jest zawsze prawdziwe.

komentarz 5 marca przez TeaCup Obywatel (1,360 p.)
Hej @adrain17,

A jak powinienem skonstruować tego ifa żeby był poprawny?
komentarz 5 marca przez adrian17 Ekspert (300,440 p.)
W zasadzie... wrzuciłbym te stringi do listy i zrobił dokładnie to co napisałem powyżej :)
komentarz 5 marca przez TeaCup Obywatel (1,360 p.)
Hej @adrian17,

Aha, w sumie to bardzo logiczne rozwiązanie :-D.

Dzięki za pomoc.

Podobne pytania

0 głosów
1 odpowiedź 2,979 wizyt
+2 głosów
1 odpowiedź 1,423 wizyt
pytanie zadane 12 listopada 2019 w Python przez Karpik Użytkownik (680 p.)
0 głosów
3 odpowiedzi 1,841 wizyt
pytanie zadane 2 listopada 2019 w Python przez Karpik Użytkownik (680 p.)
Porady nie od parady
Pytania na temat serwisu SPOJ należy zadawać z odpowiednią kategorią dotyczącą tej strony.SPOJ

85,212 zapytań

134,029 odpowiedzi

297,158 komentarzy

56,309 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...