Eu tenho uma lista:
my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
e deseja procurar itens que contenham a sequência 'abc'
. Como eu posso fazer isso?
if 'abc' in my_list:
verificaria se 'abc'
existe na lista, mas faz parte de 'abc-123'
e 'abc-456'
, 'abc'
não existe por si só. Então, como posso obter todos os itens que contêm 'abc'
?
Respostas:
Se você deseja apenas verificar a presença de
abc
qualquer string na lista, tenteSe você realmente deseja obter todos os itens que contêm
abc
, usefonte
if myitem in myarray:
filter(lambda element: 'abc' in element, some_list)
index()
método:try: return mylist.index(myitem); except ValueError: pass
Apenas divulgando isso: se você precisar corresponder a mais de uma string, por exemplo ,
abc
edef
poderá combinar duas compreensões da seguinte maneira:Resultado:
fonte
{s for s in my_list for xs in matchers if xs in s}
(observe os colchetes para criar um conjunto exclusivo). Pode ser mais fácil de ler, mas pode ser mais lento se a maioria doss
valores tiver uma correspondência, pois suaany
parada será eficiente na primeira correspondência.Use
filter
para obter os elementos que possuemabc
.Você também pode usar uma compreensão de lista.
A propósito, não use a palavra
list
como um nome de variável, pois ela já é usada para olist
tipo.fonte
Se você só precisa saber se 'abc' está em um dos itens, esta é a maneira mais curta:
fonte
Essa é uma pergunta bastante antiga, mas ofereço esta resposta porque as respostas anteriores não lidam com itens da lista que não são cadeias de caracteres (ou algum tipo de objeto iterável). Esses itens causariam uma falha na compreensão da lista inteira, com uma exceção.
Para lidar com esses itens normalmente na lista, ignorando os itens não iteráveis, use o seguinte:
então, com essa lista:
você ainda receberá os itens correspondentes (
['abc-123', 'abc-456']
)O teste para iterável pode não ser o melhor. Entendi a partir daqui: No Python, como determino se um objeto é iterável?
fonte
[el for el in lst if el and (st in el)]
faria mais sentido no exemplo dado?my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
não há necessidade de complicar demais.fonte
fonte
if 'abc' in item
usar um poucoitem.find('abc') == -1
.fonte
Use o
__contains__()
método da classe de string Pythons .:fonte
Eu sou novo no Python. Coloquei o código abaixo funcionando e facilitei a compreensão:
fonte
fonte
fonte
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)
Eu fiz uma pesquisa, que exige que você insira um determinado valor, e ele procurará um valor da lista que contém sua entrada:
Tente pesquisar por 'abc'.
fonte
fonte
Eu precisava dos índices da lista que correspondam a uma correspondência da seguinte maneira:
resultado
fonte
Pergunta: Dê as informações de abc
fonte
Pelo que sei, uma declaração 'for' sempre consumirá tempo.
Quando o tamanho da lista cresce, o tempo de execução também aumenta.
Eu acho que, pesquisar uma substring em uma string com a declaração 'is' é um pouco mais rápido.
Mas, eu concordo que a
any
afirmação é mais legível.fonte