una tamaño sacar saber palabra misma metodos llenar listas lista esta elementos elemento comparar buscar agregar python

tamaño - sacar elementos de una lista python



Compruebe si un elemento de la lista de Python contiene una cadena dentro de otra cadena (13)

Esta es una pregunta bastante antigua, pero ofrezco esta respuesta porque las respuestas anteriores no manejan los elementos de la lista que no son cadenas (o algún tipo de objeto iterable). Tales elementos harían que la comprensión de la lista completa falle con una excepción.

Para lidiar con gracia con dichos elementos en la lista omitiendo los elementos no iterables, use lo siguiente:

[el for el in lst if isinstance(el, collections.Iterable) and (st in el)]

entonces, con tal lista:

lst = [None, ''abc-123'', ''def-456'', ''ghi-789'', ''abc-456'', 123] st = ''abc''

todavía obtendrá los elementos coincidentes ( [''abc-123'', ''abc-456''] )

La prueba para iterable puede no ser la mejor. Lo obtuve de aquí: en Python, ¿cómo puedo determinar si un objeto es iterable?

Tengo una lista:

my_list = [''abc-123'', ''def-456'', ''ghi-789'', ''abc-456'']

y desea buscar elementos que contengan la cadena ''abc'' . ¿Cómo puedo hacer eso?

if ''abc'' in my_list:

comprobaría si ''abc'' existe en la lista pero es parte de ''abc-123'' y ''abc-456'' , ''abc'' no existe por sí solo. Entonces, ¿cómo puedo obtener todos los artículos que contienen ''abc'' ?


Este es el camino más corto:

if ''abc'' in str(my_list):


Por lo que sé, una declaración ''para'' siempre consumirá tiempo.

Cuando la longitud de la lista está creciendo, el tiempo de ejecución también aumentará.

Creo que buscar un subcadena en una cadena con la declaración ''is'' es un poco más rápido.

In [1]: t = ["abc_%s" % number for number in range(10000)] In [2]: %timeit any("9999" in string for string in t) 1000 loops, best of 3: 420 µs per loop In [3]: %timeit "9999" in ",".join(t) 10000 loops, best of 3: 103 µs per loop

Pero, estoy de acuerdo en que any declaración es más legible.


Pregunta: Dar las informaciones de abc.

a = [''abc-123'', ''def-456'', ''ghi-789'', ''abc-456''] aa = [ string for string in a if "abc" in string] print(aa) Output => [''abc-123'', ''abc-456'']


Si solo desea comprobar la presencia de abc en cualquier cadena de la lista, puede intentar

some_list = [''abc-123'', ''def-456'', ''ghi-789'', ''abc-456''] if any("abc" in s for s in some_list): # whatever

Si realmente desea obtener todos los elementos que contienen abc , utilice

matching = [s for s in some_list if "abc" in s]


Simplemente deseche esto: si necesita hacer coincidir contra más de una cadena, por ejemplo, abc y def , puede combinar las dos listas de comprensión de la siguiente manera:

matchers = [''abc'',''def''] matching = [s for s in my_list if any(xs in s for xs in matchers)]

Salida:

[''abc-123'', ''def-456'', ''abc-456'']


Soy nuevo en Python. Conseguí el código de abajo trabajando y fácil de entender

my_list = [''abc-123'', ''def-456'', ''ghi-789'', ''abc-456''] for str in my_list: if ''abc'' in str: print(str)


Usa el filter para llegar a los elementos que tienen abc .

>>> lst = [''abc-123'', ''def-456'', ''ghi-789'', ''abc-456''] >>> print filter(lambda x: ''abc'' in x, lst) [''abc-123'', ''abc-456'']

También puede utilizar una lista de comprensión.

>>> [x for x in lst if ''abc'' in x]

Por cierto, no use la list palabras como un nombre de variable ya que ya se usa para el tipo de list .


any(''abc'' in item for item in mylist)


for item in my_list: if item.find("abc") != -1: print item


my_list = [''abc-123'', ''def-456'', ''ghi-789'', ''abc-456''] for item in my_list: if (item.find(''abc'')) != -1: print (''Found at '', item)


mylist=[''abc'',''def'',''ghi'',''abc''] pattern=re.compile(r''abc'') pattern.findall(mylist)


x = ''aaa'' L = [''aaa-12'', ''bbbaaa'', ''cccaa''] res = [y for y in L if x in y]