Klasickým problémem, který lze v Pythonu poměrně snadno řešit a který byl také mnohokrát řešen, je zjištění, zda je řetězec podřetězcem jiného. Někdy si však člověk přeje rozšířit tuto možnost na seznam řetězců, a proto pak vyžaduje projít celý kontejner a provést obecný algoritmus.
Probereme si některé způsoby, jak najít řetězce s daným podřetězcem v seznamu.
Způsob č. 1 : Použití porozumění seznamu 
 Porozumění seznamu je elegantní způsob, jak provést nějakou konkrétní úlohu, protože dlouhodobě zvyšuje čitelnost. Tuto úlohu lze provést naivní metodou, a tudíž ji lze redukovat i na porozumění seznamu.
  test_list =     print ("The original list is : " + str(test_list))    subs = 'Geek'   res =     print ("All strings with given substring are : " + str(res))  The original list is : All strings with given substring are :
Metoda č. 2 : Použití filter() + lambda
Tuto úlohu nalezení řetězců lze provést také pomocí funkce lambda. Pouze vyfiltruje všechny řetězce odpovídající danému podřetězci a poté je přidá do nového seznamu.
  test_list =     print ("The original list is : " + str(test_list))    subs = 'Geek'   res = list(filter(lambda x: subs in x, test_list))    print ("All strings with given substring are : " + str(res))  The original list is : All strings with given substring are :
Metoda #3 : Použití re + search()
Regulární výrazy lze v pythonu použít k mnoha úlohám. K provedení této konkrétní úlohy se mohou hodit i regulární výrazy. Pomocí search() najde všechny odpovídající podřetězce a vrátí výsledek.
import re    test_list =     print ("The original list is : " + str(test_list))    subs = 'Geek'   res =     print ("All strings with given substring are : " + str(res))  The original list is : All strings with given substring are :
Napsat komentář