Operación de truco de Python: siete formas de determinar si se incluye una subcadena

Hay muchas (y cada vez más) características avanzadas en el lenguaje Python, que gustan mucho a los entusiastas de Python. A los ojos de estas personas, aquellos que pueden escribir funciones avanzadas que los desarrolladores normales no pueden entender son maestros y dioses.

Pero tienes que saber que en el trabajo en equipo, lucir habilidades es un tabú.

¿Por qué dices eso? Déjame hablar de mi opinión:

  1. Cuanto más simple sea el código y más clara la lógica, menos propenso a errores;
  2. En el trabajo en equipo, su código no solo lo mantiene usted. Es una buena moraleja reducir el costo de leer / comprender la lógica del código.
  3. El código simple solo usará el azúcar sintáctico más básico, y las funciones avanzadas complejas tendrán más dependencias (como las versiones de idioma)

Este artículo es el tercer contenido de la " Serie de tecnología Hyun " En esta serie, resumiré y contaré las increíbles operaciones que he visto. Aquí, si eres un entusiasta de Python, puedes aprender algunas habilidades de codificación interesantes. Al mismo tiempo, leer estos contenidos puede ayudarlo a leer el código de otras personas.

1. Usar en y no en

inY not inen Python son palabras clave muy populares, las clasificaremos como 成员运算符.

Con estos dos operadores de miembros, podemos determinar de forma intuitiva y clara si un objeto está en otro objeto. Los ejemplos son los siguientes:

>>> "llo" in "hello, python"
True
>>>
>>> "lol" in "hello, python"
False

2. Usa el método de búsqueda

Usando el método de búsqueda del objeto de cadena, si se encuentra la subcadena, puede devolver la posición de la subcadena especificada en la cadena, si no, devolverá -1

>>> "hello, python".find("llo") != -1
True
>>> "hello, python".find("lol") != -1
False
>>

3. Utilice el método de índice

El objeto de cadena tiene un método de índice, que puede devolver el índice de la primera aparición de la subcadena especificada en la cadena. Si no se encuentra, se lanzará una excepción, por lo que debe prestar atención a la captura cuando la use.

def is_in(full_str, sub_str):
    try:
        full_str.index(sub_str)
        return True
    except ValueError:
        return False

print(is_in("hello, python", "llo"))  # True
print(is_in("hello, python", "lol"))  # False

4. Usa el método de conteo

Usando la idea de salvar al país con la curva de índice, también podemos usar el método de conteo para juzgar.

Siempre que el resultado del juicio sea mayor que 0, significa que la subcadena existe en la cadena.

def is_in(full_str, sub_str):
    return full_str.count(sub_str) > 0

print(is_in("hello, python", "llo"))  # True
print(is_in("hello, python", "lol"))  # False

5. A través de métodos mágicos

En el primer método que usamos para juzgar y no en una subcadena existe en otro carácter, cuando en realidad usa in y no in, el intérprete de Python irá a verificar si el objeto tiene un __contains__método mágico.

Si hay uno, ejecútelo. De lo contrario, Python iterará automáticamente toda la secuencia y devolverá True siempre que encuentre el elemento requerido.

Los ejemplos son los siguientes;

>>> "hello, python".__contains__("llo")
True
>>>
>>> "hello, python".__contains__("lol")
False
>>>

Este uso no es diferente de usar in y no in, pero no descarta que alguien lo escriba así para aumentar la dificultad de entender el código.

6. Con la ayuda del operador

El módulo de operador es una interfaz de función de operador integrada en Python, que define algunas funciones para operaciones integradas aritméticas y de comparación. El módulo de operador está implementado en c, por lo que la velocidad de ejecución es más rápida que el código Python.

Hay un método en el operador que containspuede determinar fácilmente si la subcadena en la cadena.

>>> import operator
>>>
>>> operator.contains("hello, python", "llo")
True
>>> operator.contains("hello, python", "lol")
False
>>> 

7. Utilice la correspondencia regular

Hablando de la función de búsqueda, definitivamente se puede decir que la regla regular es una herramienta profesional, y lo complejas que pueden satisfacerte las reglas de búsqueda.

Para la necesidad de determinar si una cadena existe en otra cadena, usar la regularidad es simplemente excesivo.

import re

def is_in(full_str, sub_str):
    if re.findall(sub_str, full_str):
        return True
    else:
        return False

print(is_in("hello, python", "llo"))  # True
print(is_in("hello, python", "lol"))  # False

Supongo que te gusta

Origin blog.csdn.net/weixin_36338224/article/details/109187689
Recomendado
Clasificación