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ář