Mam listę:
my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
i chcesz wyszukać elementy zawierające ciąg 'abc'
. Jak mogę to zrobić?
if 'abc' in my_list:
by sprawdzić, czy 'abc'
istnieje na liście, ale to jest częścią 'abc-123'
i 'abc-456'
, 'abc'
nie istnieje na własną rękę. Jak mogę zdobyć wszystkie przedmioty, które zawierają 'abc'
?
Odpowiedzi:
Jeśli chcesz tylko sprawdzić obecność
abc
dowolnego ciągu na liście, możesz spróbowaćJeśli naprawdę chcesz uzyskać wszystkie elementy zawierające
abc
, użyjźródło
if myitem in myarray:
filter(lambda element: 'abc' in element, some_list)
index()
metody:try: return mylist.index(myitem); except ValueError: pass
Po prostu to wyrzucamy: jeśli na przykład musisz dopasować więcej niż jeden ciąg
abc
idef
możesz połączyć dwa wyrażenia w następujący sposób:Wynik:
źródło
{s for s in my_list for xs in matchers if xs in s}
(zwróć uwagę na nawiasy klamrowe, aby stworzyć unikalny zestaw). Może być łatwiejszy do odczytania, ale może być wolniejszy, jeśli większośćs
wartości będzie pasować, ponieważany
skutecznie zatrzyma się przy pierwszym dopasowaniu.Użyj,
filter
aby dostać się do elementów, które mająabc
.Możesz także użyć listy.
Nawiasem mówiąc, nie używaj tego słowa
list
jako nazwy zmiennej, ponieważ jest ono już używane dla tegolist
typu.źródło
Jeśli potrzebujesz tylko wiedzieć, czy „abc” jest w jednym z elementów, jest to najkrótsza droga:
źródło
To dość stare pytanie, ale oferuję tę odpowiedź, ponieważ poprzednie odpowiedzi nie dotyczą elementów na liście, które nie są łańcuchami (lub jakimś obiektem iterowalnym). Takie pozycje spowodowałyby niepowodzenie pełnego zrozumienia listy z wyjątkiem.
Aby z wdziękiem radzić sobie z takimi elementami na liście, pomijając elementy, które nie są iterowalne, użyj następujących czynności:
następnie z taką listą:
nadal otrzymasz pasujące przedmioty (
['abc-123', 'abc-456']
)Test iterowalności może nie być najlepszy. Mam to stąd: w Pythonie, jak ustalić, czy obiekt jest iterowalny?
źródło
[el for el in lst if el and (st in el)]
w podanym przykładzie nie miałoby to większego sensu?my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
nie musi go nadmiernie komplikować.źródło
źródło
if 'abc' in item
raczej używanieitem.find('abc') == -1
.źródło
Użyj
__contains__()
metody klasy łańcuchowej Python:źródło
Jestem nowy w Pythonie. Poniższy kod działał i ułatwiłem zrozumienie:
źródło
źródło
źródło
import re
mylist=['abc','def','ghi','abcff']
my_list_string=''.join(mylist)
string_to_find="abc"
res=re.findall(string_to_find,my_list_string)
print(res)
Przeprowadziłem wyszukiwanie, które wymaga wprowadzenia określonej wartości, a następnie wyszuka wartość z listy zawierającej dane wejściowe:
Spróbuj wyszukać „abc”.
źródło
źródło
Potrzebowałem indeksów listy, które odpowiadają dopasowaniu w następujący sposób:
wynik
źródło
Pytanie: Podaj informacje abc
źródło
Z mojej wiedzy stwierdzenie „za” zawsze pochłania czas.
Gdy długość listy rośnie, czas wykonania również rośnie.
Myślę, że wyszukiwanie podłańcucha w łańcuchu za pomocą instrukcji „is” jest nieco szybsze.
Ale zgadzam się, że
any
oświadczenie jest bardziej czytelne.źródło