Sprawdź, czy pozycja listy Pythona zawiera ciąg wewnątrz innego ciągu
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:
sprawdzi, czy
„abc”istnieje na liście, ale jest częścią
„abc-123”i
„abc-456”, < code> „abc” nie istnieje samodzielnie. Jak więc mogę uzyskać wszystkie elementy zawierające
„abc”?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
18 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Jeśli naprawdę chcesz uzyskać wszystkie elementy zawierające , użyj
matching = [s for s in some_list if "abc" in s]
Anonimowy użytkownik
Potwierdzenie od:
Wynik:
['abc-123', 'def-456', 'abc-456']
Anonimowy użytkownik
Potwierdzenie od:
Możesz także użyć rozumienia listy.
>>> [x for x in lst if 'abc' in x]
Nawiasem mówiąc, nie używaj słowa jako nazwy zmiennej, ponieważ jest już używane dla typu .
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Aby wdzięcznie obsłużyć takie elementy na liście, pomijając elementy nie iterowalne, użyj następujących poleceń:
[el for el in lst if isinstance(el, collections.Iterable) and (st in el)]
następnie z taką listą:
nadal będziesz otrzymywać pasujące elementy (
['abc-123', 'abc-456']
)Test iterowalności może nie być najlepszy. Mam to stąd:
w Pythonie, jak mogę stwierdzić, czy obiekt jest iteracyjny?
https://coderoad.ru/1952464/
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
mylist=['abc','def','ghi','abc']pattern=re.compile(r'abc') pattern.findall(mylist)
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Spróbuj wyszukać „abc”.
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
lista indeksowa
które pasują do takiego dopasowania:
wynik
[0, 3]
Anonimowy użytkownik
Potwierdzenie od:
możesz to zmienić w ten sposób
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Wraz ze wzrostem długości listy wydłuża się również czas wykonania.
Myślę, że wyszukiwanie podciągu w ciągu z operatorem „is” jest nieco szybsze.
Ale zgadzam się, że instrukcja jest bardziej czytelna.