25 habilidades de programación de Python que debes conocer

1. Intercambio in situ
Python proporciona una forma intuitiva de asignar e intercambiar (valores variables) en una línea de código.

 

x, y = 10, 20
print(x, y)
 
x, y = y, x
print(x, y)
 
#1 (10, 20)
#2 (20, 10)

 

Mucha gente aprende Python y no sabe por dónde empezar.

Muchas personas aprenden Python y después de dominar la gramática básica, no saben dónde encontrar casos para comenzar.

Muchas personas que han realizado estudios de casos no saben cómo adquirir conocimientos más avanzados.

Entonces, para estos tres tipos de personas, les proporcionaré una buena plataforma de aprendizaje, ¡gratis para recibir tutoriales en video, libros electrónicos y el código fuente del curso! ?? ¤

Grupo QQ: 701698587

Principio: El lado derecho de la asignación forma una nueva tupla, y el lado izquierdo desempaqueta inmediatamente esa tupla (sin comillas) en las variables <a> y <b>. Una vez que se completa la asignación, la nueva tupla se convierte en un estado sin referencia y se marca para la recolección de basura, y finalmente se completa el intercambio de variables.

En segundo lugar, el operador de comparación
Python en forma de cadena no requiere muchas condiciones para escribir una por una, el operador de comparación puede agregar.

n = 10
result = 1 < n < 20
print(result)
 
# True
 
result = 1 > n <= 9
print(result)
 
# False


3. Operador ternario para asignación condicional. El
operador ternario es una declaración if-else que es un atajo del operador condicional: [La expresión es el valor de retorno verdadero] if [Expresión] else [La expresión es el valor de retorno falso]

A continuación, se muestra un ejemplo que puede utilizar para hacer que el código sea compacto y conciso. La siguiente declaración dice "Si y es 9, asigne 10 ax, de lo contrario asigne el valor 20".

x = 10 if (y == 9) else 20


 En la lista de comprensión:

[m**2 if m > 10 else m**4 for m in range(50)]


Determine el valor mínimo:

def small(a, b, c):
    return a if a <= b and a <= c else (b if b <= a and b <= c else c)


En la clase:

x = (classA if y == 1 else classB)(param1, param2)


 

4. Cadena de varias líneas
Esto es mucho más conveniente que C. Es realmente incómodo poner un carácter de nueva línea en c y escapar.

a='''dvfssd
fsdfdsfsd
dsdsfbfdfasf
afasfaf'''
print(a)


Cinco, en el juicio
se puede utilizar directamente para juzgar si una variable está en la lista.

Podemos utilizar los siguientes métodos para verificar varios valores:

if m in [1,3,5,7]:

En vez de:

if m==1 or m==3 or m==5 or m==7:

Seis, cuatro formas de voltear cadenas / listas
 

# 翻转列表本身

testList = [1, 3, 5]
testList.reverse()
print(testList)
#-> [5, 3, 1]


# 在一个循环中翻转并迭代输出

for element in reversed([1,3,5]):
    print(element)
 
 
#1-> 5
 
#2-> 3
 
#3-> 1


# 一行代码翻转字符串

"Test Python"[::-1]
 
 
 
#输出 “nohtyP tseT”


# 使用切片翻转列表

[1, 3, 5][::-1]
 
 
 
#输出 [5,3,1]。


 

Siete, inicializa múltiples variables a la vez
 

 Puede asignarse directamente:

a, b, c, d = 1,2,3,4
pueden usar la lista:

List = [1,2,3]
x,y,z=List
print(x, y, z)
#-> 1 2 3


(La cantidad de elementos debe ser la misma que la longitud de la lista)

 

8. Ruta del módulo de impresión
 

import socket
print(socket)
#<module 'socket' from '/usr/lib/python2.7/socket.py'>


 
Nueve, comprensión de diccionario
Python no solo usa comprensiones para listas, sino también para diccionarios / conjuntos

#列表
l=[[0 for i in range(4)] for i in range(4)]#生成二维列表
print(l)
#  [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
testDict = {i: i * i for i in xrange(10)}
testSet = {i * 2 for i in xrange(10)}
 
print(testSet)
print(testDict)
 
#set([0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
#{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}


Diez cadenas de empalme
Como todos sabemos, se pueden agregar cadenas en Python:

a="i "
b="love "
c="you"
print(a+b+c)


Todos los elementos de la lista concatenados son una cadena

l=['a','b','c']
print(''join(l))
#以join左边的字符做分割


Once, índice de enumeración circular
 

list = [10, 20, 30]
for i, value in enumerate(list):
    print(i, ': ', value)
 
#1-> 0 : 10
#2-> 1 : 20
#3-> 2 : 30


Es fácil encontrar los subíndices y los elementos correspondientes.

 

12. Devolver varios valores
No muchos lenguajes de programación admiten esta función, pero los métodos en Python sí (pueden) devolver varios valores.

def a():
    return 1,2,3,4,5

Trece, compartir archivos abiertos
Python permite ejecutar un servidor HTTP para compartir archivos desde la ruta raíz, el siguiente es el comando para abrir el servidor:

python3 -m http.server

El comando anterior iniciará un servidor en el puerto predeterminado que es 8000. Puede pasar un número de puerto personalizado al comando anterior como último parámetro.

 
14. Depurar scripts
Podemos establecer puntos de interrupción en los scripts de Python con la ayuda del módulo <pdb>, por ejemplo:

import pdb
pdb.set_trace()


Quince elementos de secuencia de iteración directa
Para las secuencias (str, list, tuple, etc.), iterar elementos de secuencia directamente es más rápido que iterar el índice de elementos.

>>> l=[0,1,2,3,4,5]
>>> for i in l:
    print(i)
#快
>>> for i in range(len(l)):
    print(l[i])
#慢


16. Uso inteligente de la sentencia else (importante)
La cláusula else de Python puede usarse no solo en sentencias if, sino también en sentencias for, while y try. Esta característica del lenguaje no es un secreto, pero no se ha tomado en serio.

for:

l=[1,2,3,4,5]
for i in l:
    if i=='6':
        print(666)
        break
else:
    print(999)


Si esto no se logra, solo podemos configurar una variable para registrar:

l=[1,2,3,4,5]
a=1
for i in l:
    if i=='6':
        print(666)
        a=0
        break
if a:
    print(999)


mientras y para son similares

Eche un vistazo a probar:

try:
    a()
except OSError:
    #语句1
else:
    #语句2


Ejecute el bloque else solo cuando no se arroje ninguna excepción en el bloque try.

Resume lo demás: f

or:

  仅当 for 循环运行完毕时(即 for 循环没有被 break 语句中止)才运行 else 块。

while:

  仅当 while 循环因为条件为假值而退出时(即 while 循环没有被break 语句中止)才运行 else 块。

try:

  仅当 try 块中没有异常抛出时才运行 else 块。

Es decir, si una excepción o una instrucción return, break o continue hace que el control salte del bloque principal de la instrucción compuesta, también se omitirá la cláusula else.

 

 La comprensión normal debería ser "ejecutar este ciclo o hacer aquello". Sin embargo, en un bucle, la semántica de else es exactamente la opuesta: "Ejecuta este bucle y luego haz esa cosa".

 

Diecisiete, el uso y la función de
except try / except: Capture la excepción causada por PYTHON en sí o en el proceso de escribir el programa y restaure.

excepto: captura todas las demás excepciones

excepto el nombre: solo captura excepciones específicas

excepto nombre, valor: captura de excepciones y datos adicionales (ejemplo)

excepto (nombre1, nombre2) captura la excepción enumerada

excepto (nombre1, nombre2), valor: detecta cualquiera de las excepciones enumeradas y obtiene datos adicionales

else: ejecutar si no se genera ninguna excepción

finalmente: siempre ejecuta este código

 

18. La introspección de Python
también es una característica sólida de Python. La introspección es el tipo de objeto que un programa escrito en un lenguaje orientado a objetos puede conocer en tiempo de ejecución. Una oración simple es el tipo de objeto que se puede obtener en tiempo de ejecución. Por ejemplo , tipo (), dir (), getattr (), hasattr (), isinstance ().

 

Diecinueve,
lista de contenedores de Python : elementos variables (cualquier tipo de datos), ordenados (indexables), anexar / insertar / pop;

Tuplas: los elementos son inmutables, pero los elementos variables en los elementos son variables; ordenados (indexables); y las tuplas pueden tener hash, por ejemplo, como una clave de diccionario.

Colección: desordenada (no indexada), mutuamente diferentes

Diccionario: pares clave-valor desordenados (clave: valor), la clave es única y no se puede repetir

 

20. map () La función
map () recibe dos parámetros, uno es una función y el otro es Iterable. Map aplicará la función pasada a cada elemento de la secuencia por turno, y devolverá el resultado como un nuevo Iterador. (Comprensión clave)

Por ejemplo, si tenemos una función f (x) = x2, si queremos aplicar esta función a una lista [1, 2, 3, 4, 5, 6, 7, 8, 9], podemos usar map ( ) La implementación es la siguiente:

>>> def f(x):
...     return x * x
...
>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> list(r)
[1, 4, 9, 16, 25, 36, 49, 64, 81]


Como función de orden superior, map () en realidad abstrae las reglas de operación. Por lo tanto, no solo podemos calcular f (x) = x2 simple, sino también funciones arbitrariamente complejas, como convertir todos los números de esta lista en cadenas de caracteres :

>>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
['1', '2', '3', '4', '5', '6', '7', '8', '9']


 

21. Reducir
reduce aplica una función a una secuencia [x1, x2, x3, ...]. Esta función debe recibir dos parámetros. Reducir continúa el resultado con el siguiente elemento de la secuencia para el cálculo acumulativo

Ejemplo simple:

>>> from functools import reduce
>>> def fn(x, y):
        return x * 10 + y
 
>>> reduce(fn, [1, 3, 5, 7, 9])
13579


Combinados, podemos escribir la función int () nosotros mismos

from functools import reduce
 
a={'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
 
def charnum(s):
    return a[s]
 
def strint(s):
    return reduce(lambda x, y: x * 10 + y, map(charnum, s))


 

Sigamos hablando de algunas funciones útiles.

Twenty-two. Split
Python split () divide la cadena especificando el separador. Si el parámetro num tiene un valor especificado, solo num subcadenas se separan.

gramática:

str.split(str="", num=string.count(str))


simplificar:

str.split("")

Veintitrés, combinando teoría con práctica
 

1) Combinado con el conocimiento aprendido en el cuarto período, podemos escribir esta línea de código

print(" ".join(input().split(" ")[::-1]))

Darse cuenta de la función, la pregunta original de leetcode: dada una oración (que solo contiene letras y espacios), invierta la posición de las palabras en la oración, divida las palabras con espacios, y solo hay un espacio entre las palabras y no hay espacios antes y después de. Por ejemplo: (1) "hola xiao mi" -> "mi xiao hola"

 

2) Da otro ejemplo:

Combine dos matrices de enteros en orden ascendente y filtre los elementos de matriz duplicados

Parámetros de entrada:

int * pArray1: matriz de enteros 1

intiArray1Num: el número de elementos en la matriz 1

int * pArray2: matriz de enteros 2

intiArray2Num: el número de elementos en la matriz 2

Para Python, es inútil dar el número.

a,b,c,d=input(),list(map(int,input().split())),input(),list(map(int,input().split()))
print("".join(map(str,sorted(list(set(b+d))))))


 

3) Combinamos conocimientos recientes para hacer un problema:

Ingrese un entero entero, siga el orden de lectura de derecha a izquierda y devuelva un nuevo entero sin números repetidos.

result=""
for i in input()[::-1]:
    if i not in result:
        result+=i
print(result)


Hay muchas operaciones específicas y concisas, por lo que no daré ejemplos aquí, obtengamos más experiencia.

Bien, continuemos con otras funciones.

 

Twenty-four. Filter La
función filter () incorporada de Python se usa para filtrar secuencias.

Similar a map (), filter () también recibe una función y una secuencia. A diferencia de map (), filter () aplica la función pasada a cada elemento por turno, y luego decide si mantener o descartar el elemento según si el valor de retorno es Verdadero o Falso.

Ejemplo simple, elimine números pares:

def is_odd(n):
    return n % 2 == 1
 
list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
# 结果: [1, 5, 9, 15]


Podemos utilizar el conocimiento que hemos aprendido para realizar el Ericht Sieve:

Conocimientos relacionados de Ehrlich Sieve: https://blog.csdn.net/hebtu666/article/details/81486370

Este código no es original:

#先构造一个从3开始的奇数序列:
def _odd_iter():
    n = 1
    while True:
        n = n + 2
        yield n
#这是一个生成器,并且是一个无限序列。
 
#筛选函数
def _not_divisible(n):
    return lambda x: x % n > 0
#生成器
def primes():
    yield 2
    it = _odd_iter() # 初始序列
    while True:
        n = next(it) # 返回序列的第一个数
        yield n
        it = filter(_not_divisible(n), it) # 构造新序列


Utilice filter () para generar continuamente nuevas secuencias después del cribado

El iterador es una secuencia de cálculos perezosos, por lo que podemos usar Python para representar secuencias como "todos los números naturales" y "todos los números primos", y el código es muy conciso.

 

Veinticinco, ordenados
 

>>> sorted([36, 5, -12, 9, -21])
[-21, -12, 5, 9, 36]
#可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:
>>> sorted([36, 5, -12, 9, -21], key=abs)
[5, 9, -12, -21, 36]


 
Veamos un ejemplo de clasificación de cadenas:

>>> sorted(['bob', 'about', 'Zoo', 'Credit'])
['Credit', 'Zoo', 'about', 'bob']


De forma predeterminada, la clasificación de cadenas se compara de acuerdo con el tamaño de ASCII. Como 'Z' <'a', como resultado, la letra mayúscula Z se ordenará antes que la letra minúscula a.

Ahora, proponemos que la clasificación debe ignorar el uso de mayúsculas y minúsculas y clasificar en orden alfabético. Para implementar este algoritmo, no es necesario realizar cambios importantes en el código existente, siempre que podamos usar una función clave para asignar la cadena para ignorar la clasificación de mayúsculas y minúsculas. Comparar dos cadenas ignorando mayúsculas y minúsculas es en realidad cambiar primero las cadenas a mayúsculas (o todas a minúsculas) y luego compararlas.

De esta manera, podemos pasar la función clave a sorted para lograr una clasificación que no distinga entre mayúsculas y minúsculas:

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)
['about', 'bob', 'Credit', 'Zoo']


Para realizar la ordenación inversa, sin cambiar la función de la tecla, puede pasar el tercer parámetro reverse = True:

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)
['Zoo', 'Credit', 'bob', 'about']


Como se puede ver en los ejemplos anteriores, las capacidades de abstracción de las funciones de orden superior son muy poderosas y el código central se puede mantener muy conciso.

sorted () también es una función de orden superior. La clave para ordenar con sorted () es implementar una función de mapeo.

Supongo que te gusta

Origin blog.csdn.net/Python_kele/article/details/115014617
Recomendado
Clasificación